MSSQL 2016: error de tabla: el valor de clave inferior en la página no es el valor de clave del primario

Microsoft.SQLServer.2016.Table_error__The_low_key_value_on_page__is_not_the_key_value_in_the_parent_1_5_Rule (Rule)

Una página de nivel de árbol del árbol B contiene un registro para cada página secundaria, junto con una clave para esa página secundaria. Si la página secundaria se encuentra en un nivel hoja (es decir, nivel 0), todos los registros de la página deberán contar con valores de clave mayores o iguales que el valor de clave de la página primaria. Si la página secundaria se encuentra en una página de nivel de árbol (es decir, nivel > 0), todos los registros deberán tener valores de clave superiores al valor de clave de la página primaria, salvo el primer registro, que debe tener un valor de clave que coincida exactamente con el de la página primaria.

Knowledge Base article:

Causas

Una página de nivel de árbol del árbol B contiene un registro para cada página secundaria, junto con una clave para esa página secundaria. Si la página secundaria se encuentra en un nivel hoja (es decir, nivel 0), todos los registros de la página deberán contar con valores de clave mayores o iguales que el valor de clave de la página primaria. Si la página secundaria se encuentra en una página de nivel de árbol (es decir, nivel > 0), todos los registros deberán tener valores de clave superiores al valor de clave de la página primaria, salvo el primer registro, que debe tener un valor de clave que coincida exactamente con el de la página primaria.

Este mensaje significa error en la comparación. Si el valor de LEVEL es 0, la página P_ID1 es una página de nivel hoja y COMPARISON será '>='. De lo contrario, LEVEL deberá ser mayor que 0, lo que indica que P_ID1 es una página de nivel de árbol y COMPARISON será '=='. En ambos casos, la página P_ID2 es una página de nivel de árbol y es la página primaria de la página P_ID1.

Soluciones

ERROR DE HARDWARE

Ejecute un diagnóstico de hardware y corrija cualquier problema. Examine además los registros de sistema y aplicaciones de Microsoft Windows NT, así como el registro de errores de SQL Server, para ver si el error se ha producido como consecuencia de un error de hardware. Corrija los problemas relacionados con el hardware.

Si sigue teniendo problemas de datos dañados, intente intercambiar diferentes componentes de hardware para aislar el problema. Asegúrese de que el sistema no tiene habilitada la memoria caché de escritura en el controlador de disco. Si sospecha que este puede ser el caso, póngase en contacto con el proveedor de hardware.

Por último, podría resultar útil cambiar a un sistema de hardware completamente nuevo, lo que incluye volver a dar formato a las unidades de disco y reinstalar el sistema operativo.

RESTAURAR DESDE COPIA DE SEGURIDAD

Si el problema no está relacionado con el hardware y tiene una copia de seguridad limpia disponible, úsela para restaurar la base de datos.

DBCC CHECKDB

Si no hay ninguna copia de seguridad limpia disponible, ejecute DBCC CHECKDB sin una cláusula de reparación para determinar el alcance de los daños. DBCC CHECKDB recomendará la cláusula de reparación que se debe usar. A continuación, ejecute DBCC CHECKDB con la cláusula de reparación adecuada para solucionar los daños.

PRECAUCIÓN: si no está seguro del efecto que pueda tener DBCC CHECKDB con una cláusula de reparación sobre sus datos, póngase en contacto con el proveedor de soporte técnico principal antes de ejecutar esta instrucción.

Si se ejecuta DBCC CHECKDB con una de las cláusulas de reparación pero no se soluciona el problema, póngase en contacto con el proveedor de soporte técnico principal.

Parámetros invalidables

Nombre

Descripción

Valor predeterminado

Habilitado

Habilita o deshabilita el flujo de trabajo.

Prioridad

Define la prioridad de la alerta.

1

Gravedad

Define la gravedad de la 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: error de tabla: el valor de clave inferior en la página no es el valor de clave del primario
{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>Event ID: $Data/EventDisplayNumber$. $Data/EventDescription$</AlertParameter1>
</AlertParameters>
<Suppression>
<SuppressionValue/>
</Suppression>
</WriteAction>
</WriteActions>
</Rule>