Windows의 MSSQL: 테이블 오류: 페이지가 이 데이터베이스의 범위를 벗어났습니다.

Microsoft.SQLServer.Windows.EventRule.DBEngine.Table_error__page_is_out_of_the_range_of_this_database_1_5_Rule (Rule)

지정한 페이지가 할당된 것으로 표시되었지만 아래에서 설명하는 특정 상태를 제외하고는 페이지가 있는 파일의 사용 중인 범위를 벗어납니다.

Knowledge Base article:

원인

지정한 페이지가 할당된 것으로 표시되었지만 아래에서 설명하는 특정 상태를 제외하고는 페이지가 있는 파일의 사용 중인 범위를 벗어납니다.

상태 단위 정보:

상태 1, 2: 페이지가 IAM에 할당된 일반 페이지입니다. PAGETYPE이 'SinglePage'입니다.

상태 3: 페이지가 IAM 페이지입니다. PAGETYPE이 'IAM'입니다.

상태 10: IAM 페이지가 잘못된 간격으로 매핑됩니다. 이 간격의 시작이 파일의 사용 중인 범위를 벗어납니다. PAGETYPE이 'IAM'입니다.

상태 10: 페이지가 IAM 페이지입니다. PAGETYPE이 'IAM'입니다.

상태 10: 복구하는 동안 인덱스의 첫 번째 IAM 페이지가 PageId_NULL이 되었습니다. 이것은 명령에 치명적입니다. PAGETYPE이 'IAM'입니다.

해결 방법

하드웨어 오류

하드웨어 진단을 실행하여 문제가 있으면 이를 해결하세요. 또한 Microsoft Windows NT 시스템 및 응용 프로그램 로그와 SQL Server 오류 로그를 확인하여 이 오류가 하드웨어 오류로 인해 발생한 것인지 확인합니다. 하드웨어 관련 문제가 있으면 해결하세요.

데이터 손상 문제가 지속되면 다른 하드웨어 구성 요소로 교체하여 문제를 해결하세요. 디스크 컨트롤러에서 쓰기 캐싱을 사용하도록 설정하지 않았는지 확인합니다. 이것이 문제라고 생각되면 하드웨어 공급업체에 문의하세요.

마지막으로, 디스크 드라이브를 다시 포맷하고 운영 체제를 다시 설치하는 등 새 하드웨어 시스템으로 완전히 전환하는 것이 도움이 될 수 있습니다.

백업에서 복원

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

DBCC CHECKDB

문제가 없는 백업을 사용할 수 없는 경우 복구 절 없이 DBCC CHECKDB를 실행하여 손상 범위를 확인합니다. DBCC CHECKDB에서 사용할 복구 절을 제시해 줍니다. 그러면 해당 복구 절을 사용해서 DBCC CHECKDB를 실행하여 손상을 복구하세요.

주의: DBCC CHECKDB에 복구 절을 사용할 때 데이터에 어떤 영향이 있는지 잘 모를 경우 이 명령문을 실행하기 전에 주 지원 공급자에게 문의하십시오.

복구 절을 사용하여 DBCC CHECKDB를 실행해도 문제가 해결되지 않을 경우 주 지원 공급자에게 문의하세요.

페이지가 IAM 페이지인 경우 복구를 수행하면 일부분인 IAM 체인이 다시 만들어져 페이지가 제거됩니다. 그렇지 않으면, 페이지 할당이 취소됩니다.

주의: 이 복구로 인해 데이터가 손실될 수 있습니다.

재정의 가능한 매개 변수

이름

설명

기본값

사용

워크플로 사용하거나 사용하지 않도록 설정합니다.

간격(초)

워크플로를 실행하는 반복 시간 간격(초)입니다.

300

우선 순위

알림 우선 순위를 정의합니다.

1

심각도

알림 심각도를 정의합니다.

1

동기화 시간

동기화 시간

 

시간 제한(초)

여기서 지정한 시간 동안 워크플로가 실행된 후 워크플로가 닫히고 실패로 표시됩니다.

200

데이터베이스 연결 시간 제한(초)

워크플로는 지정된 기간 동안 데이터베이스에 액세스할 수 없으면 실패하며 이벤트를 등록합니다.

15

Element properties:

TargetMicrosoft.SQLServer.Windows.DBEngine
CategoryEventCollection
EnabledTrue
Alert GenerateTrue
Alert SeverityWarning
Alert PriorityNormal
RemotableTrue
Alert Message
Windows의 MSSQL: 테이블 오류: 페이지가 이 데이터베이스의 범위를 벗어났습니다.
{0}
CommentMom2017ID='{30E82644-85C2-40F4-AFF8-AB9983FAC0BA}';MOM2017GroupID={467ECC75-C5DA-42BD-955C-A73BBB51AF74}

Member Modules:

ID Module Type TypeId RunAs 
_F6DA1507_12AF_11D3_AB21_00A0C98620CE_ DataSource Microsoft.SQLServer.Windows.DataSource.EventCollectionFiltered Default
GenerateAlert WriteAction System.Health.GenerateAlert Default

Source Code:

<Rule ID="Microsoft.SQLServer.Windows.EventRule.DBEngine.Table_error__page_is_out_of_the_range_of_this_database_1_5_Rule" Target="SqlDiscW!Microsoft.SQLServer.Windows.DBEngine" Enabled="true" ConfirmDelivery="true" Remotable="true" Comment="Mom2017ID='{30E82644-85C2-40F4-AFF8-AB9983FAC0BA}';MOM2017GroupID={467ECC75-C5DA-42BD-955C-A73BBB51AF74}">
<Category>EventCollection</Category>
<DataSources>
<DataSource ID="_F6DA1507_12AF_11D3_AB21_00A0C98620CE_" Comment="{F6DA1507-12AF-11D3-AB21-00A0C98620CE}" TypeID="Microsoft.SQLServer.Windows.DataSource.EventCollectionFiltered">
<MachineName>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/MachineName$</MachineName>
<NetbiosComputerName>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/NetbiosComputerName$</NetbiosComputerName>
<InstanceName>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/InstanceName$</InstanceName>
<ConnectionString>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/ConnectionString$</ConnectionString>
<InstanceVersion>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/Version$</InstanceVersion>
<InstanceEdition>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/Edition$</InstanceEdition>
<MonitoringType>$Target/Property[Type="SqlDiscW!Microsoft.SQLServer.Windows.DBEngine"]/MonitoringType$</MonitoringType>
<SqlTimeoutSeconds>15</SqlTimeoutSeconds>
<TimeoutSeconds>200</TimeoutSeconds>
<IntervalSeconds>300</IntervalSeconds>
<SyncTime/>
<EventDisplayNumber>8968</EventDisplayNumber>
</DataSource>
</DataSources>
<WriteActions>
<WriteAction ID="GenerateAlert" TypeID="Health!System.Health.GenerateAlert">
<Priority>1</Priority>
<Severity>1</Severity>
<AlertMessageId>$MPElement[Name="Microsoft.SQLServer.Windows.EventRule.DBEngine.Table_error__page_is_out_of_the_range_of_this_database_1_5_Rule.AlertMessage"]$</AlertMessageId>
<AlertParameters>
<AlertParameter1>Event ID: $Data/Property[@Name='EventID']$. $Data/Property[@Name='Message']$</AlertParameter1>
</AlertParameters>
<Suppression>
<SuppressionValue/>
</Suppression>
</WriteAction>
</WriteActions>
</Rule>