MSSQLSERVER_7105

적용 대상: 예SQL Server(지원되는 모든 버전)

세부 정보

attribute
제품 이름 SQL Server
이벤트 ID 7105
이벤트 원본 MSSQLSERVER
구성 요소 SQLEngine
심볼 이름 TXT_PGNOTEXIST
메시지 텍스트 LOB 데이터 형식 노드에 대한 데이터베이스 ID %d, 페이지 %S_PGID, 슬롯 %d이(가) 없습니다. 이 오류는 일반적으로 데이터 페이지에서 커밋되지 않은 데이터를 읽을 수 있는 트랜잭션에 의해 발생합니다. DBCC CHECKTABLE을 실행하세요.

설명

데이터베이스 페이지 행에서 참조된 LOB(Large Object) 데이터에 액세스할 수 없는 경우 쿼리에서 메시지 7105가 발생할 수 있습니다.

이 오류는 심각도 수준 22이므로 서버에서 연결을 종료합니다. 또한 이 오류 메시지는 SQL ERRORLOG 파일 및 Windows 애플리케이션 이벤트 로그에 EventID=7105로 기록됩니다.

가능한 원인

이 오류는 다음 이유 중 하나로 인해 발생할 수 있습니다.

  • 데이터베이스 페이지 또는 데이터베이스 페이지에서 참조된 LOB 페이지 구조 내에 데이터베이스 손상 문제가 있습니다.
  • READ UNCOMMITTED ISOLATION LEVEL 또는 NOLOCK 쿼리 힌트를 사용하는 쿼리가 실패합니다.
  • SQL Server 엔진 내의 문제로 인해 이 오류가 발생하여 쿼리가 실패합니다.

특정 문제의 원인과 적절한 해결 방법을 확인하려면 해결 방법 및 추가 정보 섹션을 참조하세요.

사용자 조치

  1. 메시지에 표시된 대로 먼저 데이터베이스에 대해 DBCC CHECKDB를 실행하거나 문제가 발생한 테이블에 대해 DBCC CHECKTABLE을 실행해야 합니다.

    • 메시지에 데이터베이스 ID가 제공됩니다.

    • DBCC CHECKDB를 실행하지 않고 영향을 받는 테이블을 정확하게 찾으려면 오류가 발생한 쿼리에서 액세스한 테이블을 확인해야 합니다. 한 가지 방법은 SQL Profiler를 사용하여 쿼리를 추적하는 것입니다. 그러나 SQL Server 2008 및 SQL Server 2008 R2에서는 system_health 확장 이벤트 세션을 사용하여 쿼리를 찾을 수도 있습니다. system_health 세션을 사용하는 방법에 대한 자세한 내용은 다음 링크를 참조하세요. system_health 세션 사용

    • 데이터베이스 일관성 문제와 마찬가지로, 이 문제가 없는 알려진 정상 백업에서 복원하면 관련 오류를 해결할 수 있습니다.

    • 그러나 백업에서 복원할 수 없는 경우에는 DBCC CHECKDB 또는 DBCC CHECKTABLE 권장 사항에 따라 오류를 복구합니다. 오류 복구 시 데이터 손실이 발생할 수 있습니다. CHECKDB 사용 방법 및 데이터베이스 손상 문제의 원인에 대한 자세한 내용은 다음 문서를 참조하세요. DBCC CHECKDB에서 보고된 데이터베이스 일관성 오류 문제를 해결하는 방법

  2. 이 오류는 테이블에 액세스하는 쿼리가 READ UNCOMMITTED 격리 수준 또는 NOLOCK 쿼리 힌트(더티 읽기라고도 함)를 사용하기 때문에 발생했을 수 있습니다.

    • DBCC CHECKDB 또는 DBCC CHECKTABLE에서 이 테이블과 LOB 데이터 관련 오류가 표시되지 않는 경우 가장 가능성이 큰 원인은 더티 해제 읽기를 사용하기 때문입니다. 애플리케이션이 여기에 해당하는 경우 더티 읽기를 사용하지 않거나 쿼리를 다시 시도해야 합니다.

    • 이것이 오류의 원인이면 실제 데이터베이스 일관성 문제는 없는 것입니다.

자세한 정보

데이터베이스 손상으로 인해 이 문제가 발생하는 경우 DBCC CHECKDB 및/또는 DBCC CHECKTABLE에서 오류를 보고해야 합니다. 그러나 두 명령은 메시지 7105를 보고하지 않습니다. CHECKDB에서 발생하는 오류는 LOB 구조 참조 또는 LOB 구조 자체에서 손상된 항목에 따라 다릅니다.

  • 데이터베이스 페이지 행에서 유효한 LOB 페이지를 올바르게 참조하지 않는 경우 다음과 같은 오류가 표시될 수 있습니다.

    메시지 8929, 수준 16, 상태 1, 줄 1
    개체 ID 2137058649, 인덱스 ID 0, 파티션 ID 72057594038910976, 할당 단위 ID 72057594039828480(행 내부 데이터 형식): RID = (1:179:1)로 식별되는 데이터 레코드에 속한 ID 131203072의 행 외부 데이터에 오류가 있습니다.
    메시지 8964, 수준 16, 상태 1, 줄 1
    테이블 오류: 개체 ID 2137058649, 인덱스 ID 0, 파티션 ID 72057594038910976, 할당 단위 ID 72057594039894016(LOB 데이터 형식). 페이지 (1:177), 슬롯 1, 텍스트 ID 131203072의 행 외부 데이터 노드가 참조되지 않았습니다.
    메시지 8965, 수준 16, 상태 1, 줄 1
    테이블 오류: 개체 ID 2137058649, 인덱스 ID 0, 파티션 ID 72057594038910976, 할당 단위 ID 72057594039894016(LOB 데이터 형식). 페이지 (255:177), 슬롯 1, 텍스트 ID 131203072의 행 외부 데이터 노드가 페이지 (1:179), 슬롯 1에서 참조되지만 검색에 없습니다.

  • 문제 시나리오에 따라 다른 오류 조합이 발생할 수 있습니다. 이 예제에 대한 설명:

    데이터베이스 페이지 1:179, 슬롯 1에서 데이터베이스의 유효한 페이지(페이지 255:177)가 아닌 LOB 페이지를 참조하고 있습니다. 페이지 (1:177)은 유효한 LOB 페이지이지만 데이터베이스 페이지에서 참조되지 않았습니다. 따라서 이 경우의 문제는 페이지 1:179의 슬롯 1에 있는 행이 1:177이 아니라 페이지 255:177을 참조하는 것입니다.

  • DBCC CHECKDB 오류가 LOB 페이지 문제와 관련이 있는지 확인하려면 ‘행 외부 데이터’ 및 ‘LOB 데이터 형식’ 문구를 찾아야 합니다.

    메시지 8929는 LOB 페이지를 참조하는 데이터베이스 페이지와 관련된 오류입니다.
    메시지 8964는 LOB 페이지가 데이터베이스 페이지에서 참조되지 않았음을 나타내는 오류입니다.
    메시지 8965는 LOB 페이지가 데이터베이스 페이지에서 참조되었지만 유효한 페이지가 아님을 나타내는 오류입니다.

    이 오류 유형과 관련된 대부분의 상황에서는 오류 복구 시 LOB 데이터를 가리키는 행과 LOB 데이터 자체가 삭제됩니다. 복구 알고리즘은 해당 데이터베이스 행에 영향을 주는 LOB 조각만 제거하려고 하지만, LOB ‘트리 구조’ 내에서 손상된 항목에 따라 불가능한 경우도 있습니다.

  • 예제와 같이 REPAIR_ALLOW_DATA_LOSS를 사용하는 CHECKTABLE에서 반환되는 메시지는 다음과 같습니다.

    복구: 페이지 (1:179), 슬롯 1에서 개체 ID 2137058649, 인덱스 ID 0, 파티션 ID 72057594038910976, 할당 단위 ID 72057594039828480(행 내부 데이터 형식)의 레코드를 삭제했습니다. 인덱스를 다시 작성합니다.
    복구: 페이지 (1:177), 슬롯 1에서 개체 ID 2137058649, 인덱스 ID 0, 파티션 ID 72057594038910976, 할당 단위 ID 72057594039894016(LOB 데이터 형식)의 행 외부 데이터 열(ID 131203072)을 삭제했습니다.
    메시지 8929, 수준 16, 상태 1, 줄 1
    개체 ID 2137058649, 인덱스 ID 0, 파티션 ID 72057594038910976, 할당 단위 ID 72057594039828480(행 내부 데이터 형식): RID = (1:179:1)로 식별되는 데이터 레코드에 속한 ID 131203072의 행 외부 데이터에 오류가 있습니다.
    오류가 복구되었습니다.
    메시지 8964, 수준 16, 상태 1, 줄 1
    테이블 오류: 개체 ID 2137058649, 인덱스 ID 0, 파티션 ID 72057594038910976, 할당 단위 ID 72057594039894016(LOB 데이터 형식). 페이지 (1:177), 슬롯 1, 텍스트 ID 131203072의 행 외부 데이터 노드가 참조되지 않았습니다.
    오류가 복구되었습니다.
    메시지 8965, 수준 16, 상태 1, 줄 1
    테이블 오류: 개체 ID 2137058649, 인덱스 ID 0, 파티션 ID 72057594038910976, 할당 단위 ID 72057594039894016(LOB 데이터 형식). 페이지 (255:177), 슬롯 1, 텍스트 ID 131203072의 행 외부 데이터 노드가 페이지 (1:179), 슬롯 1에서 참조되지만 검색에 없습니다.
    이 오류를 복구할 수 없습니다.

    마지막 메시지인 Could not repair this error는 잘못된 메시지입니다. 잘못된 페이지 (255:177)을 가리키는 데이터베이스 페이지 행이 삭제되었으므로 오류가 복구되었습니다.