2010. 11. 23. 13:27

Admin:: LOG Rebuild

상황 1)
- Data File은 이상이 없고, SQL 서버 서비스가 정상 종료 되었을 경우 처리 할 수 있다.
- LOG 파일만 트랜잭션이 맞지 않거나 그럴 경우 문제 발생시
- TEST DB의 DB 스토리지 copy 했는데 copy 시점에 트랜잭션이 완료 되지 않은 상태에서 시작되어 copy 되었을 경우
- DB가 정상적으로 Detatch 될 때 사용 가능 하다.

CREATE DATABASE TEST ON (NAME = 'TEST_DATA', FILENAME = 'F:\MSSQL\DATA\TEST _DATA.MDF')
--,(NAME = 'SEARCHV_LOG', FILENAME = 'F:\MSSQL\LOG\SEARCHV_LOG.LDF')
FOR ATTACH_FORCE_REBUILD_LOG
-- 이건 기존 동일한 경로에 로그 파일을 생성합니다. 
그러니까 기존 로그 파일을 이름 변경 해야 합니다. 
상황 2)
- 트랜잭션 로그 파일이 손상되었을 때
- update, delete 작업 도중 rollback이  시도 했으나 오랜 시간이 걸려서 기다릴 수가 없을때, (서비스 open이 코 앞일때)
- 단, 이 작업은 정합성이 유지 되지 않을 수도 있다.
 
--1. DB를 offline 시킵니다. , 
롤백 중이라면 offline 할때도 오래 걸립니다. 롤백이 완료 될때 까지 기다기리 때문입니다.  
클러스터 장비로 되어 있다면 강제로 그룹 이동 시킵니다. 

-- 2. log 파일 이름을 변경합니다.

-- 3. DB online 합니다. 

-- 4.  주의 대상으로 DB가 올라오게 됩니다. 
ALTER DATABASE TEST SET EMERGENCY
go

-- 5. 디비가 물리적으로 문제가 있는지 확인 합니다. 해당 작업은 대용량 DB는 오래 걸립니다. 무시하시고 가셔도 됩니다. 
-- 문제가 없으면 결과에 문제 없음으로 나옵니다. 어느 정도 문제가 있는것도 6번 단계에서 복원 될 수도 있습니다
 DBCC CHECKDB (문제DB)

-- 6.  
ALTER DATABASE TEST SET SINGLE_USER  with ROLLBACK IMMEDIATE
go
DBCC CHECKDB (문제DB명, REPAIR_ALLOW_DATA_LOSS)

-- 7.
ALTER DATABASE TEST SET MULTI_USER with  ROLLBACK IMMEDIATE

-- 8 . LOG Rebuild 작업
ALTER DATABASE TEST REBUILD LOG ON 
(NAME=TEST_LOG,FILENAME='F:\MSSQL\LOG\TEST_LOG.LDF'
, SIZE = 30720MB, file_growth = 500MB)

-- 10.ONLINE 상태가 되는지 확인

참고) DBCC REBUILD_LOG 상용해서도 가능합니다. 허나, 이건 단일 로그일때만 가능합니다.
DBCC REBUILD_LOG ('db_name', 'log_file_name')


'Common Admin' 카테고리의 다른 글

Admin::Cache Flush 가 발생하는 경우  (0) 2011.03.30
Admin::Configuring Windows 2003 ( x64 ) for SQL Server  (0) 2010.12.28
waitresource 값 확인  (0) 2010.11.01
MCITP 취득 방법  (0) 2010.10.06