Windows 오류 로그에서 본 내용은 다음과 같습니다.
SQL Server가 논리적 일관성 기반 I/O 오류를 감지했습니다. 잘못된 체크섬(예상: 0x19fedd20, 실제: 0x19fed5e3). 'D:\mssql\local_repository_pbdiffimport.mdf' 파일의 오프셋 0x00000000dc8000에서 데이터베이스 ID 6의 페이지(1:1764)를 읽는 동안 발생했습니다. SQL Server 오류 로그나 시스템 이벤트 로그의 추가 메시지에서 자세한 내용을 확인할 수 있습니다. 이는 데이터베이스 무결성을 위협하는 심각한 오류 상태이므로 즉시 수정해야 합니다. 전체 데이터베이스 일관성 검사(DBCC CHECKDB)를 완료합니다. 이 오류는 다양한 요인으로 인해 발생할 수 있습니다. 자세한 내용은 SQL Server 온라인 설명서를 참조하세요.
나는 달렸다
dbcc 체크db
REPAIR_ALLOW_DATA_LOSS 옵션을 사용하여 복원해야 한다는 말을 듣고 결국 실행했습니다.
NO_INFOMSGS가 포함된 DBCC CHECKDB(my_db_name, REPAIR_ALLOW_DATA_LOSS)
그러나 이로 인해 약 2,000개의 행이 손실되었습니다. 백업을 복원했지만 이제 약 2주 전에 동일한 데이터베이스에서 일관성 문제가 있었지만 인덱스에서 문제가 발생했기 때문에 이런 일이 다시 발생할까 두렵습니다(다시 생성된 인덱스로 문제가 해결됨).
디스크를 조사해 보니 RAID5가 양호하고 오류도 없으며 디스크 검사 유틸리티에서도 하드웨어 문제가 발견되지 않았습니다.
이 문제가 OS(Windows Server 2003) 또는 MSSQL(MSSQL Server 2005)로 인해 발생할 수 있습니까?
답변1
일관성은 하드웨어나 소프트웨어 요인으로 인해 발생할 수 있습니다. 잠재적으로 문제의 원인을 조사하려면 SQL 로그를 살펴보세요.
내 제안:
- 데이터베이스 옵션인 Page_Verify가 CHECKSUM으로 설정되어 있는지 확인하세요. 이는 모든 쓰기가 발생하기 전에 확인하며 SQL Server 2005의 기본 설정입니다.
- 매일 또는 하루에 여러 번 백업(필요에 따라)
- 매일 데이터베이스의 일관성을 확인하기 위한 유지 관리 계획 설정
- Windows Server 및 Sql Server를 패치, 3rd 소프트웨어로 업데이트하세요.
- 읽다 "효과적인 데이터베이스 유지 관리를 위한 주요 팁" 내 제안의 대부분을 더 자세히 설명하기 때문입니다.
이 글은 데이터베이스 서버 관리에 대해 모르는 시스템 관리자에게 도움을 주고자 쓴 글이므로 많이 추천합니다.
답변2
시스템 이벤트 로그에 보고된 하드웨어 이벤트가 있을 수 있으므로 이를 조사해야 합니다.
SQLIOSIM을 실행하여 +24시간 동안 디스크에 스트레스를 줍니다. SQLIOSIM이 오류를 보고하는 경우 하드웨어 공급업체에 문의하여 조사해야 합니다. 디스크, RAID 어레이, 드라이버에서 발생할 수 있습니다. OS와 SQL이 가장 가능성이 낮은 범인입니다.
보다SQLIOSim 유틸리티를 사용하여 디스크 하위 시스템에서 SQL Server 활동을 시뮬레이션하는 방법.
답변3
확실히 SQL Server 문제는 아닙니다(글쎄, 매우 매우 가능성이 낮음). 또한 실제로 OS 문제가 될 가능성은 없습니다. 단순히 쓰레기 쓰기가 오류로 오래 지속되기에는 너무 명백하기 때문입니다.
이는 하드웨어의 방향을 심각하게 지적합니다. RAM(ECC를 사용하십니까?)이 원인일 수 있으며 다른 관련 문제(RAID 컨트롤러? 디스크?)도 마찬가지입니다.