MSSQL 2014 : Erreur de table : la valeur de clé haute sur la page n'est pas inférieure à la valeur de clé basse de la page parente, emplacement de la page suivante

Microsoft.SQLServer.2014.Table_error__The_high_key_value_on_page_is_not_less_than_the_low_key_value_in_the_parent_slot_of_the_next_page_1_5_Rule (Rule)

Une page de niveau arborescence binaire (B-tree) contient un enregistrement pour chaque page enfant, ainsi qu'une valeur clé pour cette page enfant. Si la page enfant est une page de niveau feuille, tous les enregistrements de la page doivent avoir des valeurs clés supérieures ou égales à la valeur clé de la page parente. Si la page enfant est une page de niveau arborescence, tous les enregistrements doivent avoir des valeurs clés supérieures à la valeur clé de la page parente, excepté le premier enregistrement qui doit avoir une valeur clé correspondant exactement à celle du parent.

Knowledge Base article:

Causes

Une page de niveau arborescence binaire (B-tree) contient un enregistrement pour chaque page enfant, ainsi qu'une valeur clé pour cette page enfant. Si la page enfant est une page de niveau feuille, tous les enregistrements de la page doivent avoir des valeurs clés supérieures ou égales à la valeur clé de la page parente. Si la page enfant est une page de niveau arborescence, tous les enregistrements doivent avoir des valeurs clés supérieures à la valeur clé de la page parente, excepté le premier enregistrement qui doit avoir une valeur clé correspondant exactement à celle du parent.

Ainsi, pour la page parente P_ID2, avec les enfants P_ID1 et P_ID3, toutes les valeurs clés de la page P_ID1 doivent être inférieures à la valeur clé stockée pour la page P_ID3 dans la page parente.

Dans ce cas, la valeur clé la plus élevée de la page P_ID1 (c'est-à-dire les clés du dernier enregistrement de la page) n'est pas inférieure à la valeur clé de la page P_ID3 stockée dans la page parente P_ID2.

Il existe trois états possibles pour ce message (1, 2 et 3), qui ont tous la même signification. Ils se distinguent uniquement par l'emplacement où le problème a été détecté dans le code.

Solutions

PANNE MATÉRIELLE

Exécutez les diagnostics matériels et corrigez les éventuels problèmes rencontrés. Examinez également les journaux des applications et système Microsoft Windows NT ainsi que le journal des erreurs SQL Server afin de déterminer si l'erreur est le résultat d'une défaillance matérielle. Corrigez les problèmes liés au matériel.

Si vous avez des problèmes persistants de données endommagées, tentez d'échanger votre ordinateur, vos contrôleurs et vos lecteurs de disque contre d'autres composants. Assurez-vous que la mise en cache des écritures n'est pas activée sur le contrôleur de disque de votre système. Si vous pensez que c'est le cas, contactez le fournisseur du matériel.

Pour terminer, il peut être utile d'installer un tout nouveau système matériel, de reformater vos lecteurs de disque et de réinstaller votre système d'exploitation.

RESTAURATION À PARTIR D'UNE SAUVEGARDE

Si le problème n'est pas matériel et si une restauration réputée en bon état est disponible, restaurez la base de données à partir de la sauvegarde.

DBCC CHECKDB

Si aucune sauvegarde saine n'est disponible, exécutez DBCC CHECKDB sans clause de réparation pour déterminer l'étendue de la corruption. DBCC CHECKDB vous recommandera une clause de réparation. Ensuite, exécutez DBCC CHECKDB avec la clause de réparation adéquate afin de réparer les dégâts.

ATTENTION : si vous ne connaissez pas les conséquences sur vos données de l’exécution de DBCC CHECKDB avec une clause de réparation, contactez votre fournisseur d’assistance principal avant d’exécuter cette instruction.

L'index est reconstruit lors de la réparation. Si l'exécution de DBCC CHECKDB avec l'une des clauses de réparation ne corrige pas le problème, contactez votre fournisseur d'assistance principal.

Paramètres remplaçables

Nom

Description

Valeur par défaut

Activé

Active ou désactive le flux de travail.

Oui

Priorité

Définit la priorité de l'alerte.

1

Severité

Définit la gravité de l'alerte.

1

Element properties:

TargetMicrosoft.SQLServer.2014.DBEngine
CategoryEventCollection
EnabledTrue
Event_ID8934
Event Source$Target/Property[Type="SQL2014Core!Microsoft.SQLServer.2014.DBEngine"]/ServiceName$
Alert GenerateTrue
Alert SeverityWarning
Alert PriorityNormal
RemotableTrue
Alert Message
MSSQL 2014 : Erreur de table : la valeur de clé haute sur la page n'est pas inférieure à la valeur de clé basse de la page parente, emplacement de la page suivante
{0}
Event LogApplication
CommentMom2014ID='{A9F28860-B9F8-40C9-9367-47E50A7EA1E3}';MOM2014GroupID={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.2014.Table_error__The_high_key_value_on_page_is_not_less_than_the_low_key_value_in_the_parent_slot_of_the_next_page_1_5_Rule" Target="SQL2014Core!Microsoft.SQLServer.2014.DBEngine" Enabled="true" ConfirmDelivery="true" Remotable="true" Comment="Mom2014ID='{A9F28860-B9F8-40C9-9367-47E50A7EA1E3}';MOM2014GroupID={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="SQL2014Core!Microsoft.SQLServer.2014.DBEngine"]/ServiceName$</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery>EventDisplayNumber</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value>8934</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.2014.Table_error__The_high_key_value_on_page_is_not_less_than_the_low_key_value_in_the_parent_slot_of_the_next_page_1_5_Rule.AlertMessage"]$</AlertMessageId>
<AlertParameters>
<AlertParameter1>Event ID: $Data/EventDisplayNumber$. $Data/EventDescription$</AlertParameter1>
</AlertParameters>
<Suppression>
<SuppressionValue/>
</Suppression>
</WriteAction>
</WriteActions>
</Rule>