2007~2011/SQL Server2008. 11. 18. 20:17

SQL Server 2005 트랜잭션 로그 파일의 변형 또는 손상에 의해 SQL 서비스 시작 시, 복구 프로세스에 의해 데이터베이스가 복구되지 못하고 PENDING 되는 현상입니다. 트랜잭션 로그를 포기하고 REBUILD 하여 문제를 해결하는 방법에 대해서 아래와 같이 정리하였습니다.


[환경]
SQL Server 2005


[현상]
SQL 서비스를 시작하였으나 LAIGO 데이터베이스 온라인 실패 발생




[원인]
LAIGO 데이터베이스의 트랜잭션 로그 파일의 손상 또는 변형으로 데이터베이스 파일을 활성화 할 수 없습니다.


[조치방법]
트랜잭션 로그 파일을 리빌드합니다.

1. 트랜잭션 로그 파일 리빌드

ALTER DATABASE LAIGO REBUILD LOG ON (NAME=LAIGO_Log,
FILENAME='C:\Program Files\Microsoft SQL Server\MSSQL.3\MSSQL\DATA\LAIGO_log.ldf')


경고: 데이터베이스 'LAIGO'의 로그가 다시 작성되었습니다. 트랜잭션에 일관성이 없습니다. RESTORE 체인이 끊어져 서버에 이전 로그 파일에 대한 컨텍스트가 더 이상 없으므로 해당 로그 파일이 어떤 파일인지 알아야 합니다. DBCC CHECKDB를 실행하여 물리적 일관성을 확인해야 합니다. 데이터베이스가 dbo 전용 모드로 전환되었습니다. 데이터베이스를 사용할 수 있는 준비가 되면 데이터베이스 옵션을 다시 설정하고 모든 추가 로그 파일을 삭제하십시오.


트랜잭션 로그가 생성되고 아래와 같이 제한된 사용자로 데이터베이스가 온라인 되었습니다.




2. 데이터베이스를 검사합니다.

DBCC CHECKDB('LAIGO')

CHECKDB이(가) 데이터베이스 'LAIGO'에서 0개의 할당 오류와 0개의 일관성 오류를 찾았습니다.
DBCC 실행이 완료되었습니다. DBCC에서 오류 메시지를 출력하면 시스템 관리자에게 문의하십시오.
-- 좋은 소식입니다. 일관성 오류는 발생하지 않았습니다.


3. 데이터베이스 상태를 확인하고 트랜잭션 로그 파일의 크기를 적절하게 변경합니다.

sp_helpdb 'LAIGO'
ALTER DATABASE LAIGO MODIFY FILE ( NAME = N'LAIGO_Log', SIZE = 10MB)



[분석결과]
1. 데이터베이스 상태 점검

SELECT name,state_desc FROM sys.databases WHERE NAME =  'LAIGO'

name             state_desc
------------------------------------------------------
LAIGO            RECOVERY_PENDING

-- SQL Server 서비스 시작 시, 해당 데이터베이스가 복원되지 않았습니다.


2. Error Log

2008-11-18 19:34:29.90 spid13s     Starting up database 'LAIGO'.
2008-11-18 19:34:30.04 spid13s     오류: 5172, 심각도: 16, 상태: 15.
2008-11-18 19:34:30.04 spid13s     파일 'C:\Program Files\Microsoft SQL Server\MSSQL.3
                                                  \MSSQL\DATA\LAIGO_log.ldf'의 헤더는 유효한 데이터베이스 파일 
                                                  헤더가 아닙니다. PageAudit 속성이 잘못되었습니다.
2008-11-18 19:34:30.04 spid13s     파일 활성화 오류입니다. 물리적 파일 이름 "C:\Program Files\Microsoft
                                                  SQL Server\MSSQL.3\MSSQL\DATA\LAIGO_log.ldf"이(가) 잘못된
                                                  것 같습니다.
2008-11-18 19:34:30.04 spid13s     데이터베이스가 완전히 종료되지 않아 로그를 다시 작성할 수 없습니다.



작성자 : Lai Go / 작성일자 : 2008.11.18

Posted by Lai Go