사용자 데이터베이스 트랜잭션 로그 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 로 변경하여 데이터베이스에 로그인 할 수 있도록 설정
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 테이블 일관성 오류 복구
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 조치
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