Sql-Server
如何查找計算列中是否引用了列?
我正在嘗試批量重新輸入列。這意味著首先刪除並重新創建它們所屬的任何約束。
我發現這些約束引用的列
- 外鍵,
- 主鍵,
- 索引,
- 檢查約束,
- 規則,
- 預設約束。
但我找不到計算列。
我調查過
INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE
,但它不包括計算列。還有
sys.computed_columns
一個顯示定義,但不以可搜尋的方式列出列。還有其他地方可以看嗎?如果 SQL Server 可以找出依賴關係,我想我也可以。
感謝 Scott Hodgin,我在
sys.sql_expression_dependencies
SELECT OBJECT_NAME(sed.referencing_id) AS referencingTable , pc.[name] AS computedColumn , pc.is_computed , cc.[name] AS referencedcolumn , cc.is_computed FROM sys.sql_expression_dependencies sed JOIN sys.[columns] pc ON sed.referencing_minor_id = pc.column_id AND sed.referencing_id = pc.[object_id] JOIN sys.[columns] cc ON sed.referenced_minor_id = cc.column_id AND sed.referenced_id = cc.[object_id] WHERE sed.referencing_minor_id > 0 -- referencing object is Column AND sed.referenced_minor_id > 0 -- referenced object is Column AND sed.referencing_id = sed.referenced_id -- references the same table