簡體   English   中英

如何從單個存儲過程中查找所有存儲過程和表?

[英]How to find all stored procedures and table from a single stored procedure?

我正在一個數據庫上工作,它有很多存儲過程和表。

知道所有存儲過程和單個存儲過程調用的表的一種蠻力方式是通過掃描和讀取代碼。 但是,這需要很多時間。

查找所有主存儲過程調用的所有存儲過程和表的查詢是什么?

您可以像這樣查詢sys.objectssys.sql_expression_dependencies表:

SELECT sys.objects.name, sys.objects.type_desc
FROM sys.sql_expression_dependencies 
INNER JOIN sys.objects ON(referenced_id = object_id)
WHERE referencing_id = OBJECT_ID('<Your stored procedure name here>')

不要忘記用<Your stored procedure name here>的實際名稱替換<Your stored procedure name here>

更新:
從另一個存儲過程調用的存儲過程在sys.sql_expression_dependencies仍將有一行,但是referenced_id列中的值為空。 您可以使用以下方式:

DECLARE @StoredProcedureName sysname = '<Your stored procedure name here>'

SELECT sys.objects.name, sys.objects.type_desc
FROM sys.sql_expression_dependencies 
INNER JOIN sys.objects ON(referenced_id = object_id)
WHERE referencing_id = OBJECT_ID(@StoredProcedureName)

UNION ALL

SELECT procedures.name , 'Stored Procedure' As type_desc
FROM sys.sql_expression_dependencies 
INNER JOIN sys.procedures ON(referenced_entity_name = sys.procedures.name)
WHERE referencing_id = OBJECT_ID(@StoredProcedureName)
AND referenced_id IS NULL 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM