[Déconseillé] L'index non cluster indiqué par l'ID d'index est erroné

Microsoft.SQLServer.2008.The_nonclustered_index_indicated_by_the_index_ID_is_in_error_1_5_Rule (Rule)

Knowledge Base article:

Résumé

Cette erreur se produit lorsque l'index non cluster indiqué par l'ID d'index est incorrect. L'altération est détectée lorsqu'un processus tente de supprimer une ligne inexistante.

Solutions

Exécutez DBCC CHECKDB sans utiliser de clause de réparation pour déterminer l'étendue des dommages. Ensuite, exécutez DBCC CHECKDB avec la clause REPAIR_REBUILD pour corriger l'erreur. Si le problème persiste, supprimez l'index et recréez-le (comme indiqué ci-dessous) ou contactez votre fournisseur de support principal.

Important : si le problème d'indexation n'est pas corrigé lors de l'exécution de DBCC CHECKDB avec la clause REPAIR_REBUILD ou si vous ignorez les conséquences sur vos données de l'exécution de DBCC CHECKDB avec la clause REPAIR_REBUILD, contactez votre fournisseur de support principal.

Pour supprimer l'index et le recréer :

Enregistrez la valeur de la page d'index et l'ID d'index indiqués dans le texte de l'erreur.

Identifiez la table et l'index correspondant au numéro de page d'index.

Notez l'ID de l'objet.

Si l'objet qui pose problème est une table système (l'ID de l'objet est inférieur à 100), vous ne pouvez pas supprimer l'index. Exécutez DBCC CHECKDB avec la clause REPAIR_REBUILD ou restaurez la base de données à partir d'une sauvegarde saine.

Si l'ID de l'objet est supérieur à 100, supprimez l'index et recréez-le à l'aide du nom de table et du nom d'index obtenus à l'étape 1. Dans la plupart des cas, l'erreur sera corrigée.

Exécutez DBCC CHECKDB avec la clause REPAIR_REBUILD dans la base de données concernée afin de vérifier que tous les problèmes ont été résolus.

Si le problème persiste, cette procédure est probablement insuffisante pour corriger l'erreur de l'index. Dans ce cas, contactez votre fournisseur de support principal. Gardez le résultat de DBCC CHECKDB à disposition pour en permettre l'examen.

Paramètres remplaçables

Nom

Description

Valeur par défaut

Activé

Active ou désactive le flux de travail.

Non

Priorité

Définit la priorité de l'alerte.

1

Gravité

Définit la gravité de l'alerte.

2

Element properties:

TargetMicrosoft.SQLServer.2008.DBEngine
CategoryEventCollection
EnabledFalse
Event_ID644
Event Source$Target/Property[Type="SQL!Microsoft.SQLServer.DBEngine"]/ServiceName$
Alert GenerateTrue
Alert SeverityError
Alert PriorityNormal
RemotableTrue
Alert Message
L'index non cluster indiqué par l'ID d'index est erroné
{0}
Event LogApplication
CommentMom2008ID='{C4E8CBD6-D28E-4F67-B4C3-5B543CE8CACF}';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.The_nonclustered_index_indicated_by_the_index_ID_is_in_error_1_5_Rule" Target="SQL2008Core!Microsoft.SQLServer.2008.DBEngine" Enabled="false" ConfirmDelivery="true" Remotable="true" Comment="Mom2008ID='{C4E8CBD6-D28E-4F67-B4C3-5B543CE8CACF}';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>644</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.The_nonclustered_index_indicated_by_the_index_ID_is_in_error_1_5_Rule.AlertMessage"]$</AlertMessageId>
<AlertParameters>
<AlertParameter1>Event ID: $Data/EventDisplayNumber$. $Data/EventDescription$</AlertParameter1>
</AlertParameters>
<Suppression>
<SuppressionValue/>
</Suppression>
</WriteAction>
</WriteActions>
</Rule>