MS-SQL Server

[펌/TIP]Restore 명령어 수행에 대한 상세로그 보기

임현수 2012. 3. 19. 00:20
대용량 데이터베이스를 복구하는 경우 현재 어떤 작업을 진행중인지 궁금해하면서 빨리 끝나기만을 기다리던 분들이 있을 것으로 생각합니다. 저 역시 그랬구요. 하지만 아래의 옵션을 사용하면 복구 진행과정 중 현재 어느 단계를 수행중인지/어느단계가 시간이 오래걸렸는지 바로 확인이 가능합니다.

[구문]

   DBCC TRACEON (3004, 3605, -1)


    - Trace
Flag 3004 : 백업 또는 복구 수행시 어떤 작업을 진행 중인지 상세히 로그를 보여줌

    - Trace Flag 3605 : SSMS에서 쿼리 수행시 결과창이 아니라 error log에 기록 

 
그럼 간단한 복구 테스트를 통해서 옵션 사용 유무에 따라서 얼마나 차이가 나는지 보도록 하겠습니다.

[테스트]
1. 복구 (옵션 비활성화)

-- 복구 수행하기
restore database testdb_restore FROM  DISK = N'E:\testdb_simple.bak' WITH file = 1,
        move N'testdb' to N'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\testdb_01.mdf',
        move N'testdb_log' to N'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\testdb_log_01.ldf',
        move N'Data01' to N'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\testdb_data_01.mdf',
        move N'Data01_text' to N'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\testdb_data_text_01.mdf'

-- 에러로그 보기 (복구에 대한 기록은 5줄만 기록됨)
sp_readerrolog




2. 복구 (옵션 활성화)
-- Errorlog recycle
sp_cycle_errorlog

-- 옵션  활성화
DBCC TRACEON (3004, 3605, -1)

-- 복구 수행하기
restore database testdb_restore_option FROM  DISK = N'E:\testdb_simple.bak' WITH file = 1,
        move N'testdb' to N'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\testdb_restore.mdf',
        move N'testdb_log' to N'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\testdb_restore_log.ldf',
        move N'Data01' to N'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\testdb_data_restore.mdf',
        move N'Data01_text' to N'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\testdb_data_text_restore.mdf'


-- 에러로그 보기 (복구에 대한 기록은 58줄 기록됨, 옵션 빈활성화에 비하여 약 11배이상 상세로그 기록됨)
sp_readerrolog




-- 옵션 비활성화
DBCC TRACEOFF (3004, 3605, -1)


[의견]
복구 절차 진행시 어디서 시간이 많이 소요되어지는 볼 수 있어 알아두면 도움이 될 것으로 보입니다.

[출처] What Is My Restore Doing?