MSSQLSERVER_2020
Berlaku untuk: SQL Server
Atribut | Nilai |
---|---|
Nama Produk | SQL Server |
ID Peristiwa | 2020 |
Sumber Kejadian | MSSQLSERVER |
Komponen | SQLEngine |
Nama Simbolis | |
Teks Pesan | Dependensi yang dilaporkan untuk entitas "%.*ls" tidak menyertakan referensi ke kolom. Ini baik karena entitas mereferensikan objek yang tidak ada atau karena kesalahan dalam satu atau beberapa pernyataan dalam entitas. Sebelum menjalankan ulang kueri, pastikan bahwa tidak ada kesalahan dalam entitas dan bahwa semua objek yang direferensikan oleh entitas ada. |
Fungsi sistem sys.dm_sql_referenced_entities akan melaporkan dependensi tingkat kolom apa pun untuk referensi terikat skema. Misalnya, fungsi akan melaporkan semua dependensi tingkat kolom untuk tampilan terindeks karena tampilan terindeks memerlukan pengikatan skema. Namun, ketika entitas yang direferensikan tidak terikat skema, dependensi kolom hanya dilaporkan ketika semua pernyataan di mana kolom direferensikan dapat terikat. Pernyataan dapat berhasil diikat hanya jika semua objek ada pada saat pernyataan diurai. Jika ada pernyataan yang ditentukan dalam entitas gagal diikat, dependensi kolom tidak akan dilaporkan dan kolom referenced_minor_id akan mengembalikan 0. Ketika dependensi kolom tidak dapat diatasi, kesalahan 2020 dimunculkan. Kesalahan ini tidak mencegah kueri mengembalikan dependensi tingkat objek.
Koreksi kesalahan apa pun yang diidentifikasi dalam pesan sebelum kesalahan 2020. Misalnya, dalam contoh kode berikut tampilan Production.ApprovedDocuments
ditentukan pada kolom Title
, ChangeNumber
, dan Status
dalam Production.Document
tabel. Fungsi sistem sys.dm_sql_referenced_entities dikueri untuk objek dan kolom tempat ApprovedDocuments
tampilan bergantung. Karena tampilan tidak dibuat menggunakan klausa WITH SCHEMA_BINDING, kolom yang direferensikan dalam tampilan dapat dimodifikasi dalam tabel yang direferensikan. Contoh mengubah kolom ChangeNumber
dalam Production.Document
tabel dengan mengganti nama menjadi TrackingNumber
. Tampilan katalog dikueri lagi untuk ApprovedDocuments
tampilan; namun tidak dapat mengikat semua kolom yang ditentukan dalam tampilan. Kesalahan 207 dan 2020 dikembalikan mengidentifikasi masalah. Untuk mengatasi masalah, tampilan harus diubah untuk mencerminkan nama baru kolom.
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
Kueri mengembalikan pesan kesalahan berikut.
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.
Contoh berikut mengoreksi nama kolom dalam tampilan.
USE AdventureWorks2022;
GO
ALTER VIEW Production.ApprovedDocuments
AS
SELECT Title,TrackingNumber, Status
FROM Production.Document
WHERE Status = 2;
GO