我想查找存盤程序中使用的所有表,但它只提供了我正在使用的資料庫中的表。是否有解決方案來查找存盤程序中使用的所有表,這些表在其他資料庫(在同一服務器中)中?
我試試這個:
SELECT DISTINCT p.name AS proc_name, t.name AS table_name
FROM sys.sql_dependencies d
INNER JOIN sys.procedures p ON p.object_id = d.object_id
INNER JOIN sys.tables t ON t.object_id = d.referenced_major_id
WHERE p.name like '%sp_example%'
ORDER BY proc_name, table_name
我需要分析的程序包含來自不同資料庫的表,但上面的代碼只給我一個資料庫的結果。
uj5u.com熱心網友回復:
首先,sys.sql_dependencies已棄用。相反,您應該使用sys.sql_expression_dependencies。在其中,您將找到參考物件的 4 部分名稱(例如,這包括通過鏈接服務器參考的物件)。
其次,object_idSQL Server 中的 any 僅在其資料庫中有意義。如果您正在尋找當前資料庫之外的任何內容,請不要通過這些識別符號連接表 - 而是使用物件名稱。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/533830.html
標籤:sql服务器
