Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro:SQL Server
Podrobnosti
| Attribute | Value |
|---|---|
| Název produktu | SQL Server |
| ID události | 2020 |
| Zdroj události | MSSQLSERVER |
| Součást | SQLEngine |
| Symbolický název | |
| Text zprávy | Závislosti hlášené pro entitu "%.*ls" neobsahují odkazy na sloupce. Je to buď proto, že entita odkazuje na objekt, který neexistuje, nebo kvůli chybě v jednom nebo více příkazech v entitě. Před opětovným spuštěním dotazu se ujistěte, že entita neobsahuje žádné chyby a že existují všechny objekty odkazované entitou. |
Explanation
Funkce sys.dm_sql_referenced_entities systému hlásí jakoukoli závislost na úrovni sloupců pro reference vázané na schémata. Například funkce hlásí všechny závislosti na úrovni sloupců pro indexovaný pohled, protože indexovaný pohled vyžaduje vázání schématu. Pokud však odkazovaná entita není vázaná na schéma, jsou sloupcové závislosti hlášeny pouze tehdy, když lze omezit všechny příkazy, ve kterých jsou sloupce odkazovány. Příkazy lze úspěšně svázat pouze tehdy, pokud všechny objekty existují v době, kdy jsou příkazy parsovány. Pokud žádný příkaz definovaný v entitě neprojde vázáním, závislosti sloupců nebudou hlášeny a sloupec referenced_minor_id vrátí 0. Když nelze vyřešit závislosti sloupců, je zobrazována chyba 2020. Tato chyba nebrání dotazu v vrácení závislostí na úrovni objektu.
Uživatelská akce
Opravte všechny chyby zjištěné ve zprávě před chybou 2020. Například v následujícím příkladu kódu je pohled Production.ApprovedDocuments definován ve sloupcích Title, ChangeNumber, a Status v tabulce Production.Document . Funkce sys.dm_sql_referenced_entities systému je dotazována na objekty a sloupce, na kterých pohled ApprovedDocuments závisí. Protože pohled není vytvořen pomocí klauzule WITH SCHEMA_BINDING, sloupce odkazované v zobrazení lze v referenční tabulce upravit. Příklad mění sloupec ChangeNumber v Production.Document tabulce tím, že jej přejmenuje na TrackingNumber. Katalogový pohled je znovu dotazován pro ApprovedDocuments tento pohled; nicméně nemůže navázat na všechny sloupce definované ve zobrazení. Chyby 207 a 2020 jsou vráceny a identifikují problém. Aby se problém vyřešil, je třeba pohled upravit tak, aby odrážel nový název sloupce.
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
Dotaz vrací následující chybové zprávy.
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.
Následující příklad opravuje název sloupce ve zobrazení.
USE AdventureWorks2022;
GO
ALTER VIEW Production.ApprovedDocuments
AS
SELECT Title,TrackingNumber, Status
FROM Production.Document
WHERE Status = 2;
GO