Erro de tabela: Tipo de página inesperado

Microsoft.SQLServer.2008.Table_error___Unexpected_page_type__1_5_Rule (Rule)

Knowledge Base article:

Resumo

A página P_ID tinha um tipo de página não esperado pelo código que estava tentando interpretá-la. No entanto, a página está marcada como alocada; por isso, o código DBCC está tentando interpretá-la.

Os vários tipos de página são:

1 - Page::DATA_PAGE: uma página de dados em um heap ou em um índice clusterizado.

2 - Página::INDEX_PAGE: uma página de índice (árvore B) na árvore de um índice clusterizado ou não clusterizado, ou a folha de um índice não clusterizado.

3 - Page::TEXT_MIX_PAGE: uma página de texto compartilhada entre várias estruturas de texto.

4 - Page::TEXT_TREE_PAGE: uma página de texto não compartilhada.

5 - Não utilizado.

6 - Page::WF_PAGE: uma página de arquivo de trabalho.

7 - Page::SORT_PAGE: uma página usada em classificações internas.

8 - Page::GAM_PAGE: um mapa de alocação GAM.

9 - Page::SGAM_PAGE: um mapa de alocação SGAM.

10 - Page::IAM_PAGE: uma página IAM.

11 - Page::PFS_PAGE: uma página de status de espaço livre e de alocação.

12 - Não utilizado.

13 - Page::BOOT_PAGE: uma página de informações no nível do banco de dados.

14 - Page::SYSCONFIG_PAGE: um bloqueio de configuração de servidor.

15 - Page::FILEHEADER_PAGE: a primeira página de cada arquivo.

16 - Page::DIFF_MAP_PAGE: um bitmap diferencial para um intervalo GAM.

17 - Page::ML_MAP_PAGE: um mapa de extensão com registros mínimos para um intervalo GAM.

Informações por estado:

Estado 1: a página foi encontrada no nível folha de uma tabela crítica do sistema, mas não era uma página de dados do tipo = 1.

Estado 36: a página tinha um tipo de página não reconhecido ou está marcada como uma página que o DBCC desalocou anteriormente durante um reparo. O erro é descoberto durante a aplicação do método Page::Audit.

Estado 300: a página é uma página de dados do tipo = 1, mas pertence a um índice não clusterizado.

Estado 301: a página é uma página de índice do tipo = 2, mas pertence a um heap ou a um índice de texto.

Estado 302: a página é uma página de texto do tipo = 3 ou 4, mas pertence a um heap ou a um índice clusterizado ou não clusterizado.

Estado 303: este estado provém de um código que está lendo páginas aparentemente alocadas para um índice (ou seja, são páginas IAM, de dados, de índice ou de texto marcadas como alocadas para uma página IAM). O código encontrou uma página que não pertence a nenhum desses tipos. Examine o tipo de página para determinar o tipo de página encontrado

Resoluções

FALHA DE HARDWARE

Execute o diagnóstico de hardware e corrija quaisquer problemas. Além disso, examine os logs de sistema e de aplicativo do Microsoft Windows NT e o log de erros do SQL Server para saber se o erro ocorreu devido a uma falha de hardware. Corrija os problemas relacionados ao hardware.

Se houver problemas persistentes de inconsistência de dados, tente alternar diferentes componentes de hardware para isolar o problema. Verifique se o sistema está com a gravação em cache habilitada no controlador de disco. Se você suspeitar que esse é o caso, contate o fornecedor do hardware.

Por fim, talvez você considere válida a aquisição de um sistema de hardware completamente novo, além da reformatação das unidades de disco e da reinstalação do sistema operacional.

RESTAURAR USANDO BACKUP

Se o problema não estiver relacionado ao hardware e se houver um backup limpo conhecido, restaure o banco de dados a partir do backup.

DBCC CHECKDB

Se não houver nenhum backup limpo disponível, execute o DBCC CHECKDB sem nenhuma cláusula de reparo para determinar a extensão do dano. O DBCC CHECKDB recomendará o uso de uma cláusula de reparo. Em seguida, execute o DBCC CHECKDB com a cláusula de reparo apropriada para reparar o dano.

CUIDADO: caso não esteja certo do efeito que o DBCC CHECKDB com uma cláusula de reparo terá em seus dados, contate o provedor de suporte antes de executar essa instrução.

Se a execução do DBCC CHECKDB com uma das cláusulas de reparo não corrigir o problema, contate o provedor de suporte.

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
Erro de tabela: Tipo de página inesperado
{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>