[펌/TIP]Restore 명령어 수행에 대한 상세로그 보기
대용량 데이터베이스를 복구하는 경우 현재 어떤 작업을 진행중인지 궁금해하면서 빨리 끝나기만을 기다리던 분들이 있을 것으로 생각합니다. 저 역시 그랬구요. 하지만 아래의 옵션을 사용하면 복구 진행과정 중 현재 어느 단계를 수행중인지/어느단계가 시간이 오래걸렸는지 바로 확인이 가능합니다.
[구문]
DBCCTRACEON(3004, 3605,-1)
- TraceFlag 3004 : 백업 또는 복구 수행시 어떤 작업을 진행 중인지 상세히 로그를 보여줌
- TraceFlag 3605 : SSMS에서 쿼리 수행시 결과창이 아니라 error log에 기록
그럼 간단한 복구 테스트를 통해서 옵션 사용 유무에 따라서 얼마나 차이가 나는지 보도록 하겠습니다.
[테스트]
1. 복구 (옵션 비활성화)
-- 복구수행하기
restoredatabasetestdb_restoreFROM DISK=N'E:\testdb_simple.bak'WITHfile= 1,
moveN'testdb'toN'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\testdb_01.mdf',
moveN'testdb_log'toN'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\testdb_log_01.ldf',
moveN'Data01'toN'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\testdb_data_01.mdf',
moveN'Data01_text'toN'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?