MSSQL 2016 : Erreur de table : liaison d'objets croisée

Microsoft.SQLServer.2016.Table_error__Cross_object_linkage_1_5_Rule (Rule)

La page P_ID1 pointe, de manière parent-enfant, vers une page (P_ID2) dans un objet différent.

Knowledge Base article:

Causes

La page P_ID1 pointe, de manière parent-enfant, vers une page (P_ID2) dans un objet différent.

Information par état :

État 1 (I_ID1 = 0) : les pages proviennent d’un segment de mémoire. La page P_ID1 comporte un enregistrement de transmission qui pointe vers une ligne de la page P_ID2.

État 1 I_ID1 > 0) : les pages proviennent d’une arborescence binaire de l’index (B-tree). La page P_ID1 comporte un pointeur de page enfant qui pointe vers la page P_ID2.

État 2 : les pages proviennent d’un objet texte. Une des conditions suivantes est vraie :

La page P_ID1 est une page texte qui contient un enregistrement avec un pointeur enfant qui pointe vers un enregistrement de la page P_ID2.

La page P_ID1 est une page d'index ou de données qui contient une racine texte de ligne qui pointe vers une page texte P_ID2.

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 continuez à rencontrer des problèmes d'incohérence des données, essayez de permuter des composants matériels pour isoler le problème. Assurez-vous que le cache d'écriture n'est pas activé sur le contrôleur de disque. 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.

ATTENTION : cette réparation peut entraîner une perte de données.

La réparation dépend de l'état de l'erreur :

État 1 (segment de mémoire) : l'enregistrement de transmission de la page P_ID1 sera supprimé et tous les index non cluster sur le segment de mémoire seront reconstruits.

État 1 (arbre B) : l'index contenant la page P_ID1 sera reconstruit.

État 2 : les deux enregistrements des pages P_ID1 et P_ID2 seront supprimés.

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.

Si l'erreur se produit alors qu'aucune erreur n'est signalée par DBCC CHECKDB, générez un script des contraintes, supprimez ces dernières, puis recréez-les. Si vous continuez à recevoir cette erreur, transférez les données dans une nouvelle table et supprimez la table existante.

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.

2

Element properties:

TargetMicrosoft.SQLServer.2016.DBEngine
CategoryEventCollection
EnabledTrue
Event_ID8925
Event Source$Target/Property[Type="SQL2016Core!Microsoft.SQLServer.2016.DBEngine"]/ServiceName$
Alert GenerateTrue
Alert SeverityError
Alert PriorityNormal
RemotableTrue
Alert Message
MSSQL 2016 : Erreur de table : liaison d'objets croisée
{0}
Event LogApplication
CommentMom2016ID='{4131B4E6-3994-4D3F-83EA-228232BB9798}';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__Cross_object_linkage_1_5_Rule" Target="SQL2016Core!Microsoft.SQLServer.2016.DBEngine" Enabled="true" ConfirmDelivery="true" Remotable="true" Comment="Mom2016ID='{4131B4E6-3994-4D3F-83EA-228232BB9798}';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>8925</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.2016.Table_error__Cross_object_linkage_1_5_Rule.AlertMessage"]$</AlertMessageId>
<AlertParameters>
<AlertParameter1>Event ID: $Data/EventDisplayNumber$. $Data/EventDescription$</AlertParameter1>
</AlertParameters>
<Suppression>
<SuppressionValue/>
</Suppression>
</WriteAction>
</WriteActions>
</Rule>