MSSQLSERVER_2020

Gäller för:SQL Server

Detaljer

Attribute Value
Produktnamn SQL Server
Händelse-ID 2020
Händelsekälla MSSQLSERVER
Component SQLEngine
Symboliskt namn
Meddelandetext De beroenden som rapporteras för entiteten "%.*ls" inkluderar inte referenser till kolumner. Det beror antingen på att entiteten refererar till ett objekt som inte finns eller på grund av ett fel i en eller flera instruktioner i entiteten. Innan du kör frågan igen kontrollerar du att det inte finns några fel i entiteten och att alla objekt som refereras av entiteten finns.

Explanation

Den sys.dm_sql_referenced_entities systemfunktionen rapporterar eventuell kolumnnivåberoende för schemabundna referenser. Till exempel rapporterar funktionen alla kolumnnivåberoenden för en indexerad vy eftersom en indexerad vy kräver schemabindning. Men när den refererade enheten inte är schema-bunden rapporteras kolumnberoenden endast när alla satser där kolumnerna refereras kan bindas. Satser kan endast begränsas framgångsrikt om alla objekt existerar vid tidpunkten för parsningen. Om något uttalande definierat i entiteten inte binder kommer kolumnberoenden inte att rapporteras och kolumnen referenced_minor_id returnerar 0. När kolumnberoenden inte kan lösas uppstår fel 2020. Detta fel hindrar inte frågan från att returnera objektnivåberoenden.

Användaråtgärd

Rätta eventuella fel som identifierats i meddelandet före fel 2020. Till exempel, i följande kodexempel definieras vyn Production.ApprovedDocuments på kolumnerna Title, ChangeNumber, och Status i tabellen Production.Document . Funktionen sys.dm_sql_referenced_entities system frågas efter de objekt och kolumner som vyn ApprovedDocuments är beroende av. Eftersom vyn inte skapas med WITH SCHEMA_BINDING-klausulen kan kolumnerna som refereras i vyn ändras i den refererade tabellen. Exemplet ändrar kolumnen ChangeNumber i Production.Document tabellen genom att byta namn på den till TrackingNumber. Katalogvyn frågas igen för vyn ApprovedDocuments ; men den kan inte binda till alla kolumner som definieras i vyn. Felmeddelandena 207 och 2020 returneras och identifierar problemet. För att lösa problemet måste vyn ändras för att spegla kolumnens nya namn.

USE AdventureWorks2022;  
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

Frågan returnerar följande felmeddelanden.

Msg 207, Level 16, State 1, Procedure ApprovedDocuments, Line 3  
Invalid column name 'ChangeNumber'.  
Msg 2020, Level 16, State 1, Line 1  
The dependencies reported for entity  
"Production.ApprovedDocuments" do not include references to  
columns. This is either because the entity references an  
object that does not exist or because of an error in one or  
more statements in the entity. Before rerunning the query,  
ensure that there are no errors in the entity and that all  
objects referenced by the entity exist.

Följande exempel korrigerar kolumnnamnet i vyn.

USE AdventureWorks2022;  
GO  
ALTER VIEW Production.ApprovedDocuments  
AS  
SELECT Title,TrackingNumber, Status  
FROM Production.Document  
WHERE Status = 2;  
GO