다음을 통해 공유


MSSQLSERVER_832

적용 대상: SQL Server

세부 정보

attribute
제품 이름 SQL Server
이벤트 ID 832
이벤트 원본 MSSQLSERVER
구성 요소 SQLEngine
심볼 이름 B_CONSTPAGECHANGED
메시지 텍스트 상수여야 하는 페이지가 변경되었습니다(예상 체크섬: <예상 값>, 실제 체크섬: <실제 값>, 데이터베이스 <dbid>, 파일 '<filename>', pageno<>). 이는 일반적으로 메모리 오류 또는 기타 하드웨어 또는 OS 손상을 나타냅니다.

설명

외부 요인으로 인해 데이터베이스 페이지를 변경하는 데 사용되는 일반 SQL Server 엔진 코드 외부에서 데이터베이스 페이지가 수정되었습니다. 조건은 다음과 같습니다.

  • 데이터베이스 페이지에 잘못된 쓰기를 하는 SQL Server 프로세스에서 실행되는 스레드입니다. 이 동작을 흔히 “스크리블러”라고 합니다.
  • 데이터베이스 페이지를 지원하는 메모리가 잘못 수정되었거나 손상되었기 때문에 하드웨어 또는 운영 체제 문제가 발생했습니다.

SQL Server에서 이 동작 오류를 감지하면 832가 발생합니다.

사용자 작업

오류의 원인을 찾으려면 다음 옵션을 고려하세요.

  • 일반적인 하드웨어 또는 시스템 검사를 실행하여 메모리, CPU 또는 기타 하드웨어 관련 문제가 있는지 확인해야 합니다. 모든 시스템 드라이버, 운영 체제 업데이트 및 하드웨어 업데이트가 시스템에 적용되었는지 확인합니다. 메모리 관련 테스트를 포함하여 하드웨어 제조 진단을 실행하는 것이 좋습니다.
  • 확장 저장 프로시저, COM 개체 또는 데이터베이스 페이지에 예약된 SQL Server 메모리를 잘못 수정할 수 있는 기타 DLL을 포함하여 이 문제를 일으킬 수 있는 SQL Server에 로드될 수 있는 "외부" DLL을 평가합니다.

이 오류가 표시되면 오류 메시지에서 dbid>에서 참조하는 <데이터베이스에 대해 즉시 실행하는 DBCC CHECKDB 것이 좋습니다.

자세한 정보

이 오류는 흔히 LazyWriter라고 하는 백그라운드 작업에서 탐지됩니다. (이 작업의 "명령"은 LAZY WRITER로 표시됩니다.) 따라서 이 오류는 클라이언트 애플리케이션에 반환되지 않습니다. 이 오류는 Windows 애플리케이션 이벤트 로그에 EventID=832로 기록됩니다.

현재 캐시(또는 "더티")에서 수정되지 않은 페이지만 확인됩니다. 디스크에서 페이지를 읽은 이후 변경된 적이 없기 때문에 메시지가 "상수"라는 용어를 사용하는 이유입니다. 또한 페이지에 체크섬 값이 있고 체크섬 오류(메시지 824)가 발생하지 않았기 때문에 디스크에서 “클린” 페이지를 읽어왔습니다. 그러나 이 오류가 발생한 후 어느 시점에 페이지를 수정한 다음 잘못된 수정으로 디스크에 쓸 수 있습니다. 이 오류가 발생하면 디스크에 기록되기 전에 모든 수정 내용을 기준으로 새 체크섬이 계산됩니다. 따라서 디스크에서 페이지가 손상될 수 있지만 디스크에서 나중에 읽어도 체크섬 오류가 트리거되지 않을 수 있습니다. 이 오류로 참조되는 모든 데이터베이스에서 실행하는 DBCC CHECKDB 것이 중요합니다.

디스크에 기록된 후 이 상태의 페이지에 대한 오류를 보고하지 않을 수도 DBCC CHECKDB 있습니다. 잘못된 수정은 데이터를 보유하지 않는 페이지의 위치에 있거나 중요한 페이지 또는 행 구조 정보를 포함하거나 CHECKDB에서 검색할 수 없는 데이터를 수정할 수 있기 때문입니다.

Msg 832에 대한 자세한 내용과 정보는 SQL Server I/O 기본 사항 2장 백서에서도 읽을 수 있습니다.