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.
Procédez comme suit :
Exécutez DBCC CHECKDB pour la base de données où résident les tables afin de vérifier l'absence de problèmes de cohérence au niveau de la base de données.
Supprimez la contrainte de clé étrangère existante et, si nécessaire, recréez une nouvelle contrainte de clé étrangère faisant référence à une colonne valide.
Assurez-vous que l'option allow updates est désactivée. Pour plus d'informations sur la définition de cette option, consultez « Option Autoriser les mises à jour » dans la documentation en ligne.
Target | Microsoft.SQLServer.2005.DBEngine | ||
Category | EventCollection | ||
Enabled | True | ||
Event_ID | 437 | ||
Event Source | $Target/Property[Type="SQL!Microsoft.SQLServer.DBEngine"]/ServiceName$ | ||
Alert Generate | True | ||
Alert Severity | Warning | ||
Alert Priority | Normal | ||
Remotable | True | ||
Alert Message |
| ||
Event Log | Application | ||
Comment | Mom2005ID='{2253943F-2EDA-43EC-AA01-640E5430061F}';MOM2005GroupID={467ECC75-C5DA-42BD-955C-A73BBB51AF74} |
ID | Module Type | TypeId | RunAs |
---|---|---|---|
_F6DA1507_12AF_11D3_AB21_00A0C98620CE_ | DataSource | Microsoft.Windows.EventProvider | Microsoft.SQLServer.SQLDefaultAccount |
GenerateAlert | WriteAction | System.Health.GenerateAlert | Default |
<Rule ID="Microsoft.SQLServer.2005.Could_not_resolve_the_referenced_column_name_in_table_1_5_Rule" Target="SQL2005Core!Microsoft.SQLServer.2005.DBEngine" Enabled="true" ConfirmDelivery="true" Remotable="true" Comment="Mom2005ID='{2253943F-2EDA-43EC-AA01-640E5430061F}';MOM2005GroupID={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>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.2005.Could_not_resolve_the_referenced_column_name_in_table_1_5_Rule.AlertMessage"]$</AlertMessageId>
<AlertParameters>
<AlertParameter1>$Data/EventDescription$</AlertParameter1>
</AlertParameters>
<Suppression>
<SuppressionValue/>
</Suppression>
</WriteAction>
</WriteActions>
</Rule>