MSSQL 2016 : Impossible de résoudre le nom de la colonne référencée dans la table

Microsoft.SQLServer.2016.Could_not_resolve_the_referenced_column_name_in_table_1_5_Rule (Rule)

Cette erreur se produit lorsque vous tentez de modifier des données dans une table avec une clé étrangère qui fait référence à une colonne qui n'existe plus dans la table référencée. Le simple changement de nom d'une colonne n'entraîne pas cette erreur. Dans des circonstances normales, une colonne référencée par une clé étrangère ne peut pas être supprimée ; cette erreur peut dès lors indiquer que des mises à jour de tables système directes non prises en charge ont été effectuées.

Knowledge Base article:

Résumé

Cette erreur se produit lorsque vous tentez de modifier des données dans une table avec une clé étrangère qui fait référence à une colonne qui n'existe plus dans la table référencée. Le simple changement de nom d'une colonne n'entraîne pas cette erreur. Dans des circonstances normales, une colonne référencée par une clé étrangère ne peut pas être supprimée ; cette erreur peut dès lors indiquer que des mises à jour de tables système directes non prises en charge ont été effectuées.

Si l'erreur n'apparaît qu'après un redémarrage de l'instance SQL Server, cela peut indiquer que des références de clés étrangères antérieures utilisaient des informations en mémoire cache concernant la colonne qui a été supprimée. La colonne peut dès lors avoir été supprimée à un moment quelconque depuis le dernier redémarrage de l'instance SQL Server.

Solutions

Procédez comme suit :

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.2016.DBEngine
CategoryEventCollection
EnabledTrue
Event_ID437
Event Source$Target/Property[Type="SQL2016Core!Microsoft.SQLServer.2016.DBEngine"]/ServiceName$
Alert GenerateTrue
Alert SeverityWarning
Alert PriorityNormal
RemotableTrue
Alert Message
MSSQL 2016 : Impossible de résoudre le nom de la colonne référencée dans la table
{0}
Event LogApplication
CommentMom2016ID='{2253943F-2EDA-43EC-AA01-640E5430061F}';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.Could_not_resolve_the_referenced_column_name_in_table_1_5_Rule" Target="SQL2016Core!Microsoft.SQLServer.2016.DBEngine" Enabled="true" ConfirmDelivery="true" Remotable="true" Comment="Mom2016ID='{2253943F-2EDA-43EC-AA01-640E5430061F}';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>437</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.Could_not_resolve_the_referenced_column_name_in_table_1_5_Rule.AlertMessage"]$</AlertMessageId>
<AlertParameters>
<AlertParameter1>Event ID: $Data/EventDisplayNumber$. $Data/EventDescription$</AlertParameter1>
</AlertParameters>
<Suppression>
<SuppressionValue/>
</Suppression>
</WriteAction>
</WriteActions>
</Rule>