Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Szczegóły
| Attribute | Value |
|---|---|
| Nazwa produktu | SQL Server |
| Identyfikator zdarzenia | 2020 |
| Źródło zdarzenia | MSSQLSERVER |
| Składnik | SQLEngine |
| Nazwa symboliczna | |
| Tekst wiadomości | Zależności raportowane dla podmiotu "%.*ls" nie zawierają odniesień do kolumn. Jest to spowodowane tym, że jednostka odwołuje się do obiektu, który nie istnieje lub z powodu błędu w co najmniej jednej instrukcji w jednostce. Przed ponownym uruchomieniem zapytania upewnij się, że w jednostce nie ma żadnych błędów i że istnieją wszystkie obiekty, do których odwołuje się jednostka. |
Explanation
Funkcja sys.dm_sql_referenced_entities systemowa raportuje dowolne zależności na poziomie kolumn dla referencji powiązanych ze schematem. Na przykład funkcja będzie raportować wszystkie zależności na poziomie kolumn dla widoku indeksowanego, ponieważ widok indeksowany wymaga wiązania schematu. Jednak gdy odwoływana jednostka nie jest powiązana ze schematem, zależności kolumn są raportowane tylko wtedy, gdy wszystkie instrukcje, w których się odwołują kolumny, mogą być ograniczone. Instrukcje mogą być skutecznie ograniczone tylko wtedy, gdy wszystkie obiekty istnieją w momencie ich parsowania. Jeśli jakiekolwiek zdanie zdefiniowane w encji nie będzie się wiązać, zależności kolumn nie będą raportowane, a kolumna referenced_minor_id zwróci 0. Gdy zależności kolumn nie mogą zostać rozwiązane, pojawia się błąd 2020. Ten błąd nie uniemożliwia zapytania zwracania zależności na poziomie obiektowym.
Akcja użytkownika
Popraw wszelkie błędy zidentyfikowane w wiadomości przed błędem 2020. Na przykład w poniższym przykładzie kodu widok Production.ApprovedDocuments jest zdefiniowany na kolumnach Title, ChangeNumber, oraz Status w tabeli Production.Document . Funkcja systemu sys.dm_sql_referenced_entities jest zapytywana o obiekty i kolumny, od których zależy widok.ApprovedDocuments Ponieważ widok nie jest tworzony za pomocą klauzuli WITH SCHEMA_BINDING, kolumny odwołane w widoku mogą być modyfikowane w referencyjnej tabeli. Przykład zmienia kolumnę ChangeNumber w tabeli Production.Document , zmieniając jej nazwę na TrackingNumber. Widok katalogowy jest ponownie zapytywany o widok; ApprovedDocuments jednak nie może się powiązać ze wszystkimi kolumnami zdefiniowanymi w widoku. Zwracane są błędy 207 i 2020, które identyfikują problem. Aby rozwiązać problem, widok musi zostać zmieniony, aby odzwierciedlał nową nazwę kolumny.
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
Zapytanie zwraca następujące komunikaty o błędzie.
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.
Poniższy przykład poprawia nazwę kolumny w widoku.
USE AdventureWorks2022;
GO
ALTER VIEW Production.ApprovedDocuments
AS
SELECT Title,TrackingNumber, Status
FROM Production.Document
WHERE Status = 2;
GO