如何从单个存储过程中查找所有存储过程和表?

时间:2015-05-25 08:30:34

标签: sql sql-server sql-server-2012

我正在开发一个包含大量存储过程和表的数据库。

了解单个存储过程调用的所有存储过程和表的一种强制方法是扫描并读取代码。但是,这需要很多时间。

查询主存储过程调用的所有存储过程和表的查询是什么?

1 个答案:

答案 0 :(得分:2)

您可以像这样查询sys.objectssys.sql_expression_dependencies表:

<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 列中将具有空值。你可以使用这样的东西:

$rootScope = data;