다음을 통해 공유


MSSQLSERVER_855

적용 대상:SQL Server

세부 사항

attribute
제품 이름 SQL Server
이벤트 ID 855
이벤트 원본 MSSQLSERVER
구성 요소 SQLEngine
심볼 이름 BAD_MEMORY_OUTSIDE_BPOOL
메시지 텍스트 수정할 수 없는 하드웨어 메모리 손상이 탐지되었습니다. 시스템이 불안정해질 수 있습니다. 자세한 내용은 Windows 이벤트 로그를 확인합니다.

설명

이 메시지는 SQL Server가 버퍼 풀 외부의 캐시된 개체에서 잘못된 메모리 페이지를 검색했음을 나타냅니다. 메모리 오류 복구 기능을 지원하는 시스템에서 메시지가 발생합니다. SQL Server는 이러한 시나리오에서 복구할 수 없으며 이 메시지를 기록합니다.

사용자 작업

하드웨어 또는 시스템 검사를 실행하여 메모리 또는 CPU 문제가 있는지 확인해야 합니다. 모든 시스템 드라이버, 운영 체제 업데이트 및 하드웨어 업데이트가 시스템에 적용되었는지 확인합니다. 메모리 관련 테스트를 포함하여 하드웨어 제조 진단을 실행하는 것이 좋습니다. 이 오류가 표시되면 이 인스턴스의 모든 데이터베이스에 대해 실행하는 DBCC CHECKDB 것이 좋습니다.

추가 정보

최신 하드웨어를 포함하고 Windows Server 2012 이상 버전을 실행하는 컴퓨터에서는 하드웨어가 운영 체제 및 애플리케이션에 메모리 페이지(운영 체제 페이지)가 잘못되었거나 손상된 것으로 표시되었음을 알릴 수 있습니다. SQL Server와 같은 애플리케이션은 다음 API 집합을 사용하여 이러한 잘못된 메모리 페이지 알림을 등록할 수 있습니다.

  • GetMemoryErrorHandlingCapabilities
  • RegisterBadMemoryNotification
  • BadMemoryCallbackRoutine

SQL Server는 Microsoft SQL Server 2012(11.x) 이상 버전에서 이러한 알림에 대한 지원을 추가합니다. SQL Server를 시작하는 동안 SQL Server는 하드웨어가 이 새로운 기능을 지원하는지 여부를 확인합니다. 또한 오류 로그에 다음 메시지가 표시됩니다.

<Datetime> Server Machine은 메모리 오류 복구를 지원합니다. SQL 메모리 보호를 사용하여 메모리 손상을 복구할 수 있습니다.

현재는 SQL Server에서 이러한 알림을 받을 때 버퍼 풀만 작업을 수행합니다. 알림을 받으면 SQL Server는 전체 버퍼 풀을 반복하고 할당된 각 버퍼의 주소를 검색해야 합니다. 그런 다음 SQL Server는 QueryWorkingSetEX API를 사용하여 데이터 페이지를 백업하는 메모리 페이지가 잘못된 것으로 표시되는지 확인합니다. 손상된 것으로 보고된 멤버가 있을 경우 이 메모리 페이지에 해당하는 PSAPI_WORKING_SET_EX_BLOCK 출력 구조에서 잘못된 멤버는 1로 설정됩니다.

해당 버퍼 풀 또는 데이터 페이지가 현재 변경되지 않았거나 I/O를 처리하지 않는 경우 SQL Server는 데이터 페이지를 삭제하고 커밋을 해제할 수 있습니다. 그런 다음 SQL Server는 다음 메시지를 기록합니다.

SQL Server가 데이터베이스 '%ls', 파일 ID: %u, 페이지 ID에서 하드웨어 메모리 손상을 감지했습니다. %u, 메모리 주소: 0x%I64x이며 페이지를 복구했습니다.

쿼리에 해당 데이터 페이지가 다시 필요한 경우 버퍼 풀은 디스크에서 데이터 페이지를 다시 읽고 내용을 버퍼 풀로 다시 가져올 수 있습니다. 디스크에 있는 페이지의 버전이 손상된 상태일 수도 있습니다. 이 경우 SQL Server는 오류 824와 같은 추가 오류를 기록할 수 있습니다.

버퍼 풀이 아니라 캐시된 다른 개체 또는 구조체에서 잘못된 페이지를 사용하는 경우 SQL Server는 다음 메시지를 기록합니다.

수정할 수 없는 하드웨어 메모리 손상이 탐지되었습니다. 시스템이 불안정해질 수 있습니다. 자세한 내용은 Windows 이벤트 로그를 확인하세요.

서버에서 메모리 오류를 보고하는 경우 컴퓨터 하드웨어 공급업체에 문의하고 메모리 진단 수행, BIOS 및 펌웨어 업데이트, 잘못된 메모리 모듈 교체와 같은 적절한 작업을 수행해야 합니다.

SQL Server 추적 플래그 849를 사용하여 SQL Server가 메모리 오류 알림을 위해 운영 체제에 등록하지 못하게 할 수 있습니다. 그러나 추적 플래그 849를 사용하도록 설정하면 SQL Server가 운영 체제에서 잘못된 메모리 알림을 받지 못하게 됩니다. 따라서 일반적인 상황에서는 이 추적 플래그를 사용하지 않는 것이 좋습니다.

또한 기본적으로 SQL Server는 지원되는 하드웨어에서 이러한 알림을 받습니다.

또한 SQL Server가 이러한 메모리 오류 알림을 등록할 때 지연 기록기 시스템 프로세스가 일정한 페이지 검사를 수행하지 않는다는 점에 유의해야 합니다. 상수 페이지 검사에 대한 자세한 내용은 SQL Server에서 Msg 832(상수 페이지가 변경됨) 문제를 해결하는 방법을 참조 하세요.