Baca dalam bahasa Inggris

Bagikan melalui


MSSQLSERVER_2020

Berlaku untuk: SQL Server

Detail

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.

Penjelasan

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.

Tindakan Pengguna

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

Lihat Juga

sys.dm_sql_referenced_entities (T-SQL)