특정 사용자에 대한 트랜잭션 로그 찾기

 

  • Version : SQL Server 2005, 2008, 2008R2, 2012, 2014

 

SQL Server에서 일어나는 모든 일은 트랜잭션 로그에 기록 된다. 이전에도 트랜잭션로그를 이용하여 삭제된 데이터를 복구하거나 트랜잭션 발생 시간 및 사용자 찾는 방법에 대해서 다룬적이 있다.

 

 

이번 포스트는 특정 사용자에 대한 트랜잭션 로그를 찾는 법에 대해서 알아본다. 사용자 정보는 직접 로그를 검색하는데 사용할 수 없지만 모든 LOP_BEGI_XACT 로그 레코드는 트랜잭션을 실행하는 사람들의 SID를 포함한다. SID는 SUSER_SID 함수를 통해서 확인할 수 있다.

SELECT SUSER_SID ('KSW_2012_2\Administrator') AS [SID];

GO

 

 

SID를 이용하여 fn_dblog() 또는 fn_dump_dblog에서 사용자를 필터할 수 있다.

SELECT

[Current LSN],

[Operation],

[Transaction ID],

[Begin Time],

LEFT ([Description], 40) AS [Description]

FROM

fn_dblog (NULL, NULL)

WHERE

[Transaction SID] = SUSER_SID ('KSW_2012_2\Administrator');

GO

 

 

하루에도 수 많은 트랜잭션로그가 발생하기 때문에 시간 범위를 좁혀서 특정 사용자의 트랜잭션 로그를 확인한다.

SELECT

[Current LSN],

[Operation],

[Transaction ID],

[Begin Time],

LEFT ([Description], 40) AS [Description]

FROM

fn_dblog (NULL, NULL)

WHERE

[Transaction SID] = SUSER_SID ('KSW_2012_2\Administrator')

AND ([Begin Time] > '2015/06/09 08:55:00:877' AND [Begin Time] < '2015/06/09 08:55:01:003');

GO

 

 

 

범위가 좁혀진 트랜잭션 로그에서 Trasnaction ID 정보를 이용하여 트랜잭션 로그에서 삭제된 행에 대한 정보를 얻고 데이터를 복원할 수 있다.

 

 

[참고자료]

http://www.sqlskills.com/blogs/paul/finding-a-transaction-in-the-log-for-a-particular-user/

 

 

2015-06-09 / 강성욱 / http://sqlmvp.kr

 

 

SQL Server, mssql, 트랜잭션로그, 특정 사용자 트랜잭션로그 찾기, 특정 사용자 로그 보기, 사용자 로그 분석, SQL 로그분석, fn_dblog, fn_dump_dblog, DBA

+ Recent posts