Dieser Fehler tritt beim Versuch auf, Daten in einer Tabelle mit einem Fremdschlüssel zu ändern, wenn dieser Fremdschlüssel auf eine Spalte verweist, die in der Tabelle, auf die verwiesen wird, nicht mehr vorhanden ist. Dieser Fehler wird nicht durch das Umbenennen einer Spalte verursacht. Normalerweise kann eine Spalte, auf die in einem Fremdschlüssel verwiesen wird, nicht gelöscht werden. Daher ist dieser Fehler unter Umständen ein Hinweis darauf, dass nicht unterstützte direkte Systemtabellenaktualisierungen vorgenommen wurden.
Wenn dieser Fehler erst nach einem Neustart der SQL Server-Instanz angezeigt wird, kann dies ein Hinweis darauf sein, dass vorherige Fremdschlüsselverweise zwischengespeicherte Informationen zur gelöschten Spalte verwendet haben. Daher kann die Spalte zu einem nicht mehr bestimmbaren Zeitpunkt seit dem letzten Neustart der SQL Server-Instanz gelöscht worden sein.
Führen Sie die folgenden Schritte aus:
Führen Sie DBCC CHECKDB für die Datenbank aus, in der die Tabellen gespeichert sind, um zu prüfen, ob Datenbankkonsistenzprobleme vorhanden sind.
Löschen Sie die vorhandene FOREIGN KEY-Einschränkung, und erstellen Sie gegebenenfalls eine neue FOREIGN KEY-Einschränkung, die auf eine gültige Spalte verweist.
Prüfen Sie, ob die Option allow updates deaktiviert ist. Anweisungen zum Festlegen dieser Option finden Sie im Thema zu "Updates zulassen (Option)" in der Onlinedokumentation.
Target | Microsoft.SQLServer.2008.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 | Mom2008ID='{2253943F-2EDA-43EC-AA01-640E5430061F}';MOM2008GroupID={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.2008.Could_not_resolve_the_referenced_column_name_in_table_1_5_Rule" Target="SQL2008Core!Microsoft.SQLServer.2008.DBEngine" Enabled="true" ConfirmDelivery="true" Remotable="true" Comment="Mom2008ID='{2253943F-2EDA-43EC-AA01-640E5430061F}';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>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.2008.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>