Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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