表错误: 意外的页类型

Microsoft.SQLServer.2008.Table_error___Unexpected_page_type__1_5_Rule (Rule)

Knowledge Base article:

摘要

尝试解释页 P_ID 的代码遇到意外的页类型。该页标记为已分配,但是,这正是 DBCC 代码尝试解释它的原因。

各种页类型有:

1 - Page::DATA_PAGE: 堆或聚集索引中的数据页。

2 - Page::INDEX_PAGE: 聚集或非聚集索引树中或非聚集索引叶中的索引(B 树)页。

3 - Page::TEXT_MIX_PAGE: 各种文本结构之间共享的文本页。

4 - Page::TEXT_TREE_PAGE: 非共享文本页。

5 - 未使用。

6 - Page::WF_PAGE: 工作文件页。

7 - Page::SORT_PAGE: 内部排序使用的页。

8 - Page::GAM_PAGE: GAM 分配映射。

9 - Page::SGAM_PAGE: SGAM 分配映射。

10 - Page::IAM_PAGE: 索引分配映射。

11 - Page::PFS_PAGE: 可用空间和分配状态页。

12 - 未使用。

13 - Page::BOOT_PAGE: 数据库范围内的信息页。

14 - Page::SYSCONFIG_PAGE: 服务器配置块。

15 - Page::FILEHEADER_PAGE: 每个文件的第一页。

16 - Page::DIFF_MAP_PAGE: GAM 间隔的差异位图。

17 - Page::ML_MAP_PAGE: GAM 间隔的最小日志记录的区映射。

不同状态下的信息:

状态 1: 在关键系统表的叶级别发现此页,但数据页类型不是 1。

状态 36: 该页具有完全无法识别的页类型,或标记为已在先前的修复操作中被 DBCC 释放的页。该错误是在 Page::Audit 方法中发现的。

状态 300: 该页的数据页类型为 1,但它属于非聚集索引。

状态 301: 该页是类型为 2 的索引页,但它属于堆或文本索引。

状态 302: 该页是类型为 3 或 4 的文本页,但它属于堆或聚集或非聚集索引。

状态 303: 此状态来自于正在读取页的代码,读取的页本来应分配给索引(也就是说,它们是 IAM 页、数据页、索引页或标记为已分配给 IAM 页的文本页)。代码发现了不是这些类型之一的页。检查页类型,以确定发现的页的类型。

解决方法

硬件故障

运行硬件诊断并更正所有显示的问题。同时,检查 Microsoft Windows NT 系统和应用程序日志以及 SQL Server 错误日志,以查看错误是否因硬件故障而产生。解决任何与硬件相关的问题。

如果不停地遇到数据不一致问题,请尝试替换不同的硬件组件以查出问题所在。检查系统是否未在磁盘控制器上启用写入缓存。如果怀疑存在这种情况,请与您的硬件供应商联系。

最后,您可能发现切换到一个全新的硬件系统(包括重新格式化磁盘驱动器和重新安装操作系统)十分有益。

从备份还原

如果出现的问题与硬件无关,并且您确信有可用的干净备份,请从备份中还原数据库。

DBCC CHECKDB

如果没有可用的干净备份,请执行不带修复子句的 DBCC CHECKDB 以确定损坏的程度。DBCC CHECKDB 将推荐可用的修复子句。然后,请执行带有适当修复子句的 DBCC CHECKDB 以修复损坏部分。

警告: 如果您不确定带有修复子句的 DBCC CHECKDB 会对数据造成何种影响,请在执行该语句前与您的主要支持提供商联系。

如果在运行带有修复子句的 DBCC CHECKDB 后仍无法解决问题,请与您的主要支持提供商联系。

可替代参数

名称

说明

默认值

已启用

启用或禁用工作流。

优先级

定义警报优先级。

1

严重性

定义警报严重性。

2

Element properties:

TargetMicrosoft.SQLServer.2008.DBEngine
CategoryEventCollection
EnabledTrue
Event_ID8938
Event Source$Target/Property[Type="SQL!Microsoft.SQLServer.DBEngine"]/ServiceName$
Alert GenerateTrue
Alert SeverityError
Alert PriorityNormal
RemotableTrue
Alert Message
表错误: 意外的页类型
{0}
Event LogApplication
CommentMom2008ID='{121A55A3-5324-47C2-BBF9-537DCD60C5C1}';MOM2008GroupID={467ECC75-C5DA-42BD-955C-A73BBB51AF74}

Member Modules:

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

Source Code:

<Rule ID="Microsoft.SQLServer.2008.Table_error___Unexpected_page_type__1_5_Rule" Target="SQL2008Core!Microsoft.SQLServer.2008.DBEngine" Enabled="true" ConfirmDelivery="true" Remotable="true" Comment="Mom2008ID='{121A55A3-5324-47C2-BBF9-537DCD60C5C1}';MOM2008GroupID={467ECC75-C5DA-42BD-955C-A73BBB51AF74}">
<Category>EventCollection</Category>
<DataSources>
<DataSource ID="_F6DA1507_12AF_11D3_AB21_00A0C98620CE_" Comment="{F6DA1507-12AF-11D3-AB21-00A0C98620CE}" TypeID="Windows!Microsoft.Windows.EventProvider" RunAs="SQL!Microsoft.SQLServer.SQLDefaultAccount">
<ComputerName>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</ComputerName>
<LogName>Application</LogName>
<Expression>
<And>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery>PublisherName</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value>$Target/Property[Type="SQL!Microsoft.SQLServer.DBEngine"]/ServiceName$</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery>EventDisplayNumber</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value>8938</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
</And>
</Expression>
</DataSource>
</DataSources>
<WriteActions>
<WriteAction ID="GenerateAlert" TypeID="SystemHealth!System.Health.GenerateAlert">
<Priority>1</Priority>
<Severity>2</Severity>
<AlertMessageId>$MPElement[Name="Microsoft.SQLServer.2008.Table_error___Unexpected_page_type__1_5_Rule.AlertMessage"]$</AlertMessageId>
<AlertParameters>
<AlertParameter1>$Data/EventDescription$</AlertParameter1>
</AlertParameters>
<Suppression>
<SuppressionValue/>
</Suppression>
</WriteAction>
</WriteActions>
</Rule>