2007~2011/SQL Server2009. 11. 10. 00:01

사용자 데이터베이스 트랜잭션 로그 LDF 파일이 위치한 DISK 장애로 인해 SQL Server 2000 사용자 데이터베이스 SUSPECT(주의대상) 문제가 발생한 사례입니다. 문제 해결 과정을 아래와 같이 정리하였습니다.
 

[환경]
SQL Server 2000 (8.00.2040)


[현상]
사용자 데이터베이스 LAIGO의 트랜잭션 로그 LDF 파일이 저장된 Disk 오류 발생으로 LAIGO 데이터베이스 suspect 발생

sa 로그인 계정의 기본 데이터베이스가 LAIGO 로 설정되어 있으며 Windows 인증 계정이 허용되어 있지 않아 데이터베이스에 로그인 할 수 없는 상태이며 로그인을 시도할 경우 아래와 같은 오류가 발생합니다.

서버에 연결할 수 없습니다.LAIGO-DBMS:
서버: 메시지 4064, 수준 16, 상태 1
[Microsoft][ODBC SQL Server Driver][SQL Server]사용자 기본 데이터베이스를 열 수 없습니다. 로그인이 실패했습니다.



[조치사항]
1. sa 기본 데이터베이스를 master 로 변경하여 데이터베이스에 로그인 할 수 있도록 설정

C:\Program Files\Microsoft SQL Server\80\Tools\Binn> osql -S . -U sa -P P@$$w0rd -d master
1> sp_defaultdb 'sa','master'
2> go


2. SUPECT 문제 해결을 위한 Log Rebuild
 - 일반적인 SUSPECT 조치사항은 앞서 포스팅 하였으므로 아래 링크에 정리되어 있습니다.
   http://laigo.kr/27

3. 클라이언트 접속 차단을 위해 SQL Server TCP/IP 포트 변경 후 서비스 재시작

4. DBCC CHECKDB (LAIGO) 오류 발생
CheckDb for database zeus found 1 unrepaired errors in SYSOBJECTS, SYSINDEXES, SYSCOLUMNS, or SYSTYPES - check terminated

5. SYSINDEXES 테이블 일관성 오류 복구

DBCC CHECKTABLE(SYSINDEXES, REPAIR_ALLOW_DATA_LOSS)

sa이(가) 실행한 DBCC CHECKTABLE(zeus.dbo.sysindexes, repair_allow_data_loss)에서 1개 오류를 발견하여 1개 오류를 복구했습니다.

6. DBCC CHECKDB (LAIGO) 재시도 - 502GB / 2시간 52분 소요
CHECKDB이(가) 'LAIGO' 데이터베이스에서 7개 할당 오류 및 612개 일관성 오류를 발견했습니다.

CHECKDB 를 사용하여 repair 를 권장하였으나 서비스 중지를 지연할 수 없어 요청한 아래 테이블에 대해서만 repair 조치

ALTER DATABASE LAIGO SET SINGLE_USER WITH ROLLBACK IMMEDIATE

DBCC CHECKTABLE(LAIGO_1,repair_fast)
DBCC CHECKTABLE(LAIGO_22,repair_rebuild)
DBCC CHECKTABLE(LAIGO_31,repair_fast)
DBCC CHECKTABLE(LAIGO_14, repair_allow_data_loss)

ALTER DATABASE LAIGO SET SINGLE_USER


7. SQL Server TCP/IP 서비스 포트 1433 변경 및 서비스 온라인 후 정상화
 - 별도 정기 정검 시간을 계획하여 CHECKDB 수행하기로 함


[참고자료]
Error message when you connect to an instance of SQL Server: "Cannot open user default database"
http://support.microsoft.com/kb/307864/en-us

SQL Server 2000 Database Suspect (주의대상) 복구
http://laigo.kr/27


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

Posted by Lai Go