Saya perlu menemukan semua tampilan & prosedur tersimpan yang mengkonsumsi tidak hanya tabel tertentu, tetapi kolom tertentu dalam tabel.
"Tampaknya" berikut ini berfungsi, tetapi ada banyak peringatan untuk berhati-hati dengan metode ini (tidak dapat diandalkan karena berbagai alasan, segera ditinggalkan, dll):
SELECT object_name(so.id) TableName, sc.name ColumnName, OBJECT_NAME(sd.id) DependentObjectName,
(SELECT xtype FROM sysobjects so WHERE so.id = sd.id) Object_Type
FROM sysobjects so INNER JOIN syscolumns sc
ON so.id = sc.id
INNER JOIN sysdepends sd
ON so.id = sd.depid and sc.colid = sd.depnumber
WHERE
object_name(so.id) = 'MyTableName'
AND sc.name = 'MyColumnName'
order by object_name(so.id), Object_Type
Beberapa pendekatan alternatif yang sering direferensikan adalah sys.sql_dependencies dan sys.sql_expression_dependencies, tetapi tidak satu pun dari ini memiliki granularity tingkat kolom.
Adakah yang tahu cara melakukan ini? (Atau bahkan jika Anda tahu secara pasti bahwa itu benar-benar tidak dapat dilakukan, akan sangat membantu untuk mengetahui.)
sql-server
tulang T
sumber
sumber
Jawaban:
Berikut adalah contoh AdventureWorks tentang melihat dependensi kolom.
sumber
where
kondisi. TS ingin menemukan ketergantungan pada kolom tertentu. Saya pikir kondisinya harus membatasic.name
daned.referenced_id
/ed.referenced_entity_name
, bukan?sys.sql_dependencies
sekarang dalam mode pemeliharaan, dan tim Microsoft merekomendasikan penggunaan sajasys.sql_expression_dependencies
. Yang sedang dikatakan - itu tidak terlihat sepertisys.sql_expression_dependencies
menangkap tingkat detail yang sama.