다음을 통해 공유


MSSQLSERVER_824

적용 대상: SQL Server

세부 정보

attribute
제품 이름 SQL Server
이벤트 ID 824
이벤트 원본 MSSQLSERVER
구성 요소 SQLEngine
심볼 이름 B_HARDSSERR
메시지 텍스트 SQL Server에서 일관성 기반의 논리적인 I/O 오류가 감지되었습니다: %ls. 파일 '%ls'의 오프셋 %#016I64x 데이터베이스 ID %d에서 %S_PGID 페이지의 %S_MSG 중에 발생했습니다. SQL Server 오류 로그 또는 운영 체제 오류 로그의 추가 메시지에서 자세한 정보를 확인할 수 있습니다. 이는 데이터베이스 무결성을 위협할 수 있는 심각한 오류 조건이므로 즉시 수정되어야 합니다. 전체 데이터베이스 일관성 검사(DBCC CHECKDB)를 완료합니다. 이 오류는 여러 요인으로 인해 발생할 수 있습니다. 자세한 내용은 다음을 참조하세요. https://go.microsoft.com/fwlink/?linkid=2252374

증상

데이터베이스 페이지를 읽거나 쓴 후 논리적 일관성 검사가 실패하면 SQL Server 오류 로그 또는 Windows 애플리케이션 이벤트 로그에 다음과 같은 오류 메시지가 표시될 수 있습니다.

2022-11-02 15:46:42.90 spid51      Error: 824, Severity: 24, State: 2.
2022-11-02 15:46:42.90 spid51      SQL Server detected a logical consistency-based I/O error: incorrect pageid (expected 1:43686; actual 0:0). It occurred during a read of page (1:43686) in database ID 23 at offset 0x0000001554c000 in file 'H:\MSSQL16.MSSQLSERVER\MSSQL\DATA\my_db.mdf'. Additional messages in the SQL Server error log or operating system error log may provide more detail. This is a severe error condition that threatens database integrity and must be corrected immediately. Complete a full database consistency check (DBCC CHECKDB). This error can be caused by many factors; for more information, see https://go.microsoft.com/fwlink/?linkid=2252374.

SELECT 또는 DML 쿼리가 이 메시지를 실행하면 애플리케이션에 오류 메시지가 반환되고 데이터베이스 연결이 종료됩니다.

원인

이 오류는 Windows에서는 디스크에서 페이지를 성공적으로 읽었다고 보고하지만, SQL Server에서 페이지에 문제가 있음을 발견했음을 나타냅니다. 이 오류는 오류 823과 유사하지만, Windows에서 오류를 감지하지 못했다는 점에서 다릅니다. 오류 824는 일반적으로 디스크 드라이브 오류, 펌웨어 문제, 장치 드라이버 결함 등 I/O 하위 시스템에 문제가 있음을 나타냅니다. I/O 오류에 대한 자세한 내용은 Microsoft SQL Server I/O 기본 사항, 2장을 참조하세요.

SQL Server는 Windows API(ReadFile, WriteFile, ReadFileScatter, WriteFileGather)를 사용하여 I/O 작업을 수행합니다. 해당 I/O 작업을 완료한 후 SQL Server는 해당 API 호출과 관련된 오류 조건을 검사합니다. 운영 체제 오류로 이러한 API 호출이 실패하면 SQL Server에서 오류 823을 보고합니다. Windows API 호출은 실제로 성공했지만 I/O 작업으로 전송된 데이터에 논리적 일관성 문제가 발생하는 상황이 있을 수 있습니다. 이러한 논리적 일관성 문제는 오류 824를 통해 보고됩니다.

824 오류는 다음 정보를 포함합니다.

  • 이 I/O 작업이 수행된 데이터베이스 파일
  • 이 I/O 작업이 시도된 파일의 오프셋
  • 이 파일이 속한 데이터베이스
  • I/O 작업에 관련된 페이지 번호
  • 작업이 읽기 작업인지 쓰기 작업인지
  • 실패한 논리적 일관성 검사에 대한 세부 정보(해당 검사의 유형, 실제 값, 해당 검사에 사용된 예상 값)

이러한 논리적 일관성 검사는 I/O 전송에 관련된 데이터의 핵심 요소가 I/O 작업 내내 그대로 유지되었는지 확인하기 위해 SQL Server에서 수행하는 무결성 검사입니다. 이 검사에는 체크섬, 조각난 페이지, 짧은 전송, 잘못된 페이지 ID, 부실 읽기, 페이지 감사 실패가 포함됩니다. 수행되는 검사의 성격은 데이터베이스 및 서버 수준의 여러 구성 옵션에 따라 달라집니다.

824 오류 메시지는 일반적으로 기본 스토리지 시스템이나 I/O 요청의 경로에 있는 하드웨어 또는 드라이버에 문제가 있음을 나타냅니다. 파일 시스템에 불일치가 있거나 데이터베이스 파일이 손상된 경우이 오류가 발생할 수 있습니다.

해결

824 오류가 발생한 경우 다음과 같은 해결 방법을 시도해 볼 수 있습니다.

  • msdb에서 suspect_pages 테이블을 검토하여 동일한 데이터베이스 또는 다른 데이터베이스에 이 문제가 발생하는 다른 페이지가 있는지 확인합니다.

    SELECT * FROM msdb..suspect_pages
    WHERE (event_type = 1 OR event_type = 2 OR event_type = 3);
    
  • DBCC CHECKDB 명령을 사용하여 824 메시지에 보고된 볼륨과 같은 볼륨에 있는 여러 데이터베이스의 일관성을 검사합니다. DBCC CHECKDB 명령에서 불일치를 발견한 경우에는 기술 자료 문서 DBCC CHECKDB에서 보고된 데이터베이스 일관성 오류 문제를 해결하는 방법의 지침을 따르세요.

    DBCC CHECKDB;
    
  • 이러한 824 오류가 발생한 데이터베이스에서 PAGE_VERIFY CHECKSUM 데이터베이스 옵션이 활성화되어 있지 않다면 즉시 이 옵션을 활성화합니다. 824 오류는 체크섬 실패 외의 다른 이유로도 발생할 수 있지만, CHECKSUM은 페이지가 디스크에 쓰여진 후에 페이지의 일관성을 확인할 가장 좋은 옵션을 제공합니다. 이 스크립트를 사용하여 CHECKSUM 옵션이 활성화되지 않은 데이터베이스를 식별합니다.

    SELECT * FROM sys.databases
    WHERE page_verify_option_desc != 'CHECKSUM';
    
  • Windows 이벤트 로그에서 운영 체제나 스토리지 디바이스 또는 디바이스 드라이버에서 보고한 오류 또는 메시지를 검토합니다. 어떤 방식으로든 이 오류와 관련이 있을 경우 해당 오류를 먼저 해결해야 합니다. 예를 들어 824 메시지와는 별도로, 디스크 원본에서 보고된 “\Device\Harddisk4\DR4에 컨트롤러 오류가 있습니다”와 같은 이벤트가 이벤트 로그에 표시될 수도 있습니다. 이 경우, 이 디바이스에 파일이 있는지 평가하고 해당 디스크 오류를 먼저 수정해야 합니다.

  • SQLIOSim 유틸리티를 사용하여 일반적인 SQL Server I/O 요청 외부에서 824 오류를 재현할 수 있는지 확인합니다. SQLIOSim은 SQL Server 2008(10.0.x) 이상 버전과 함께 제공되므로 별도로 다운로드할 필요가 없습니다.

  • 하드웨어 공급업체 또는 디바이스 제조업체와 협력하여 다음을 확인합니다.

    • 하드웨어 디바이스와 구성이 SQL Server의 I/O 요구 사항을 준수합니다.
    • I/O 경로에 있는 모든 디바이스의 디바이스 드라이버 및 기타 지원 소프트웨어 구성 요소가 최신 상태입니다.
  • 하드웨어 공급업체 또는 디바이스 제조업체에서 진단 유틸리티를 제공한 경우 해당 유틸리티를 사용하여 I/O 시스템의 상태를 평가합니다.

  • 이러한 요청의 I/O 경로에 필터 드라이버가 있는지 평가합니다. 다음 명령을 실행하여 시스템의 모든 필터 드라이버를 나열할 수 있습니다.

    fltmc filters
    fltmc instances
    
    • 데이터베이스 및 로그 파일을 이러한 필터 드라이버의 검사 대상에서 제외합니다. 자세한 내용은 바이러스 검사에서 제외할 디렉터리 및 파일 이름 확장명을 참조하세요.
    • 해당 필터 드라이버의 업데이트가 있는지 확인
    • 해당 필터 드라이버를 제거하거나 사용하지 않도록 설정하여 824 오류의 원인이 되는 문제가 사라지는지 확인할 수 있나요?
  • 가상 머신을 실행 중인 경우 모든 가상화 드라이버가 업데이트되었는지 확인하거나 가상화 공급업체에 문의하여 자세한 정보를 확인하세요.

  • 하드웨어 관련 문제가 아니면 정상적인 백업(있는 경우)을 사용하여 데이터베이스를 복원하세요.