MSSQL 2016: Erro de tabela: o valor baixo da chave na página não é o valor da chave no pai

Microsoft.SQLServer.2016.Table_error__The_low_key_value_on_page__is_not_the_key_value_in_the_parent_1_5_Rule (Rule)

Uma página no nível da árvore B contém um registro para cada página filho, juntamente com um valor de chave para essa página filho. Se a página filho for uma página de nível folha (ou seja, nível 0), todos os registros da página deverão ter valores de chave maiores ou iguais ao valor de chave da página pai. Se a página filho for uma página de nível de árvore (ou seja, nível > 0), todos os registros deverão ter valores de chave maiores do que o valor de chave da página pai, exceto o primeiro registro, que deverá ter um valor de chave que corresponda exatamente ao encontrado na página pai.

Knowledge Base article:

Causas

Uma página no nível da árvore B contém um registro para cada página filho, juntamente com um valor de chave para essa página filho. Se a página filho for uma página de nível folha (ou seja, nível 0), todos os registros da página deverão ter valores de chave maiores ou iguais ao valor de chave da página pai. Se a página filho for uma página de nível de árvore (ou seja, nível > 0), todos os registros deverão ter valores de chave maiores do que o valor de chave da página pai, exceto o primeiro registro, que deverá ter um valor de chave que corresponda exatamente ao encontrado na página pai.

Essa mensagem significa que a comparação falhou. Se LEVEL for 0, P_ID1 será uma página de nível folha e COMPARISON será '>='. Caso contrário, LEVEL deve ser maior que 0, indicando que P_ID1 é uma página de nível de árvore, e COMPARISON será '=='. Nos dois casos, a página P_ID2 é uma página de nível de árvore, e a página pai da página P_ID1.

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 você tiver problemas contínuos de danos aos 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.

Parâmetros Substituíveis

Nome

Descrição

Valor padrão

Habilitado

Habilita ou desabilita o fluxo de trabalho.

Sim

Prioridade

Define a Prioridade do Alerta.

1

Gravidade

Define a Severidade do Alerta.

1

Element properties:

TargetMicrosoft.SQLServer.2016.DBEngine
CategoryEventCollection
EnabledTrue
Event_ID8933
Event Source$Target/Property[Type="SQL2016Core!Microsoft.SQLServer.2016.DBEngine"]/ServiceName$
Alert GenerateTrue
Alert SeverityWarning
Alert PriorityNormal
RemotableTrue
Alert Message
MSSQL 2016: Erro de tabela: o valor baixo da chave na página não é o valor da chave no pai
{0}
Event LogApplication
CommentMom2016ID='{F467A6D8-3412-4760-8FD1-ABFDEAD2750B}';MOM2016GroupID={467ECC75-C5DA-42BD-955C-A73BBB51AF74}

Member Modules:

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

Source Code:

<Rule ID="Microsoft.SQLServer.2016.Table_error__The_low_key_value_on_page__is_not_the_key_value_in_the_parent_1_5_Rule" Target="SQL2016Core!Microsoft.SQLServer.2016.DBEngine" Enabled="true" ConfirmDelivery="true" Comment="Mom2016ID='{F467A6D8-3412-4760-8FD1-ABFDEAD2750B}';MOM2016GroupID={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">
<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="SQL2016Core!Microsoft.SQLServer.2016.DBEngine"]/ServiceName$</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery>EventDisplayNumber</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value>8933</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
</And>
</Expression>
</DataSource>
</DataSources>
<WriteActions>
<WriteAction ID="GenerateAlert" TypeID="SystemHealth!System.Health.GenerateAlert">
<Priority>1</Priority>
<Severity>1</Severity>
<AlertMessageId>$MPElement[Name="Microsoft.SQLServer.2016.Table_error__The_low_key_value_on_page__is_not_the_key_value_in_the_parent_1_5_Rule.AlertMessage"]$</AlertMessageId>
<AlertParameters>
<AlertParameter1>$Data/EventDescription$</AlertParameter1>
</AlertParameters>
<Suppression>
<SuppressionValue/>
</Suppression>
</WriteAction>
</WriteActions>
</Rule>