MSSQLSERVER_2020

Şunlar için geçerlidir: SQL Server

Ayrıntılar

Özellik Value
Ürün Adı SQL Server
Olay Kimliği 2020
Olay Kaynağı MSSQLSERVER
Bileşen SQLEngine
Sembolik Ad
İleti Metni "%.*ls" varlığı için bildirilen bağımlılıklar sütunlara referans içermez. Bunun nedeni, varlığın var olmayan bir nesneye başvurması veya varlıktaki bir veya daha fazla deyimdeki bir hata olmasıdır. Sorguyu yeniden çalıştırmadan önce varlıkta hata olmadığından ve varlık tarafından başvurulan tüm nesnelerin mevcut olduğundan emin olun.

Explanation

sys.dm_sql_referenced_entities sistem fonksiyonu, şema bağlı referanslar için herhangi bir sütun düzeyindeki bağımlılığı raporlar. Örneğin, fonksiyon indekslenmiş bir görünüm için tüm sütun düzeyindeki bağımlılıkları raporlar çünkü indekslenmiş bir görünüm şema bağlaması gerektirir. Ancak, referans edilen varlık şema sınırlı değilse, sütun bağımlılıkları yalnızca sütunlara referans verilen tüm ilemler bağlanabildiğinde raporlanır. İfadeler, yalnızca tüm nesnelerin ayrıştırıldığı anda var olması durumunda başarılı şekilde sınırlanabilir. Varlıkta tanımlanan herhangi bir ifade bağlanamazsa, sütun bağımlılıkları bildirilmez ve referenced_minor_id sütunu 0 döner. Sütun bağımlılıkları çözülemediğinde, 2020 hatası ortaya çıkar. Bu hata, sorgunun nesne düzeyinde bağımlılıkları geri döndürmesini engellemez.

Kullanıcı Eylemi

2020 hatasından önceki mesajda tespit edilen hataları düzeltin. Örneğin, aşağıdaki kod örneğinde görünüm Production.ApprovedDocuments sütunlarda Titletanımlanmıştır, ChangeNumber, ve Status tabloda Production.Document bulunur. sys.dm_sql_referenced_entities sistem fonksiyonu, görünümün ApprovedDocuments asılı olduğu nesneler ve sütunlar için sorgulanır. Görünüm WITH SCHEMA_BINDING cümlesi kullanılarak oluşturulmadığından, görünümde referans verilen sütunlar referans tabloda değiştirilebilir. Örnek, tablodaki Production.Document sütunu ChangeNumber yeniden adlandırarak TrackingNumberdeğiştirilir. Katalog görünümü tekrar görüş ApprovedDocuments için sorgulanır; ancak görünümde tanımlanan tüm sütunlara bağlanamaz. Sorunu belirten 207 ve 2020 hataları geri getiriliyor. Sorunu çözmek için, görünüm sütunun yeni adını yansıtacak şekilde değiştirilmelidir.

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

Sorgu aşağıdaki hata mesajlarını döndürür.

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.

Aşağıdaki örnek, görünümdeki sütun adını düzeltir.

USE AdventureWorks2022;  
GO  
ALTER VIEW Production.ApprovedDocuments  
AS  
SELECT Title,TrackingNumber, Status  
FROM Production.Document  
WHERE Status = 2;  
GO