MSSQLSERVER_2020

Details

Produktname

SQL Server

Produktversion

10.50

Buildnummer des Produkts

10.50.1399.60

Ereignis-ID

2020

Ereignisquelle

MSSQLSERVER

Komponente

SQLEngine

Symbolischer Name

  

Meldungstext

Die für die Entität "% * ls" gemeldeten Abhängigkeiten beinhalten keine Verweise auf Spalten. Dies hängt entweder damit zusammen, dass die Entität auf ein Objekt verweist, das nicht vorhanden ist, oder mit einem Fehler in einer oder mehreren Anweisungen in der Entität. Bevor Sie die Abfrage erneut ausführen, stellen Sie sicher, dass die Entität keine Fehler enthält und dass alle Objekte, auf die die Entität verweist, vorhanden sind.

Erklärung

Die Systemfunktion sys.dm_sql_referenced_entities meldet jede Abhängigkeit auf Spaltenebene für schemagebundene Verweise. Die Funktion meldet z. B. alle Abhängigkeiten auf Spaltenebene für eine indizierte Sicht, da für eine indizierte Sicht Schemabindung erforderlich ist. Wenn die Entität, auf die verwiesen wird, jedoch nicht schemagebunden ist, werden Spaltenabhängigkeiten nur gemeldet, wenn alle Anweisungen, in denen auf die Spalten verwiesen wird, gebunden werden können. Anweisungen können nur erfolgreich gebunden werden, wenn alle Objekte vorhanden sind, wenn die Anweisungen analysiert werden. Wenn eine in der Entität definierte Anweisung nicht gebunden werden kann, werden Spaltenabhängigkeiten nicht gemeldet, und die Spalte referenced_minor_id gibt 0 zurück. Wenn Spaltenabhängigkeiten nicht aufgelöst werden können, wird Fehler 2020 ausgelöst. Dieser Fehler verhindert nicht, dass die Abfrage Abhängigkeiten auf Objektebene zurückgibt.

Benutzeraktion

Korrigieren Sie alle in der Meldung vor Fehler 2020 identifizierten Fehler. Im folgenden Codebeispiel wird z. B. die Sicht Production.ApprovedDocuments für die Spalten Title, ChangeNumber und Status in der Tabelle Production.Document definiert. Die Systemfunktion sys.dm_sql_referenced_entities wird für die Objekte und Spalten abgefragt, von denen die ApprovedDocuments-Sicht abhängig ist. Da die Sicht nicht mit der WITH SCHEMA_BINDING-Klausel erstellt wird, können die Spalten, auf die in der Sicht verwiesen wird, in der Tabelle geändert werden, auf die verwiesen wird. Im Beispiel wird die Spalte ChangeNumber in der Tabelle Production.Document geändert, indem sie in TrackingNumber umbenannt wird. Die Katalogsicht wird erneut für die ApprovedDocuments-Sicht abgefragt. Es ist jedoch keine Bindung an alle in der Sicht definierten Spalten möglich. Die Fehler 207 und 2020 werden zurückgegeben und geben das Problem an. Um das Problem zu beheben, muss die Sicht so geändert werden, dass der neue Name der Spalte widergespiegelt wird.

USE AdventureWorks2008R2;

GO

CREATE VIEW Production.ApprovedDocuments

AS

    SELECT Title, ChangeNumber, Status

    FROM Production.Document

    WHERE Status = 2;

GO

SELECT referenced_schema_name AS schema_name

    ,referenced_entity_name AS table_name

    ,referenced_minor_name AS referenced_column

FROM sys.dm_sql_referenced_entities ('Production.ApprovedDocuments', 'OBJECT');

GO

EXEC sp_rename 'Production.Document.ChangeNumber', 'TrackingNumber', 'COLUMN';

GO

SELECT referenced_schema_name AS schema_name

    ,referenced_entity_name AS table_name

    ,referenced_minor_name AS referenced_column

FROM sys.dm_sql_referenced_entities ('Production.ApprovedDocuments', 'OBJECT');

GO

Die Abfrage gibt die folgenden Fehlermeldungen zurück.

Meldung 207, Ebene 16, Status 1, Prozedur ApprovedDocuments, Zeile 3

Ungültiger Spaltenname 'ChangeNumber'.

Meldung 2020, Ebene 16, Status 1, Zeile 1

Die für die Entität "Production.ApprovedDocuments" gemeldeten Abhängigkeiten beinhalten keine Verweise auf Spalten. Dies hängt entweder damit zusammen, dass die Entität auf ein Objekt verweist, das nicht vorhanden ist, oder mit einem Fehler in einer oder mehreren Anweisungen in der Entität. Bevor Sie die Abfrage erneut ausführen, stellen Sie sicher, dass die Entität keine Fehler enthält und dass alle Objekte, auf die die Entität verweist, vorhanden sind.

Im folgenden Beispiel wird der Spaltenname in der Sicht korrigiert.

USE AdventureWorks2008R2;

GO

ALTER VIEW Production.ApprovedDocuments

AS

    SELECT Title,TrackingNumber, Status

    FROM Production.Document

    WHERE Status = 2;

GO