【发布时间】:2012-09-17 18:59:05
【问题描述】:
我是一家大量使用存储过程 (500+) 的公司的新手。为了帮助学习系统,我希望有一种简单的方法来构建一个树类型列表,该列表显示系统中的所有存储过程以及它们自己调用的存储过程......从而创建一个可以执行的存储过程的映射.有没有一种简单的方法可以通过 SQL Server 中的查询来做到这一点?有没有可以做到这一点的工具/实用程序?
例如,我想看到以下类型的列表,而不必费力地尝试遵循每个过程中的逻辑并手动制作列表。
build_house
-->pour_foundation
-->order_cement_truck
-->frame_house
-->hire_workers
-->buy_nails_and_hammers
-->wire_house
-->hire_electricians
-->check_certifications
-->test_wiring
到目前为止,我发现的唯一内容是:
http://www.codeproject.com/Articles/10019/Find-Stored-Procedures-called-within-a-procedure
明确地说,我希望传入/选择一个存储过程名称,并将它调用/使用的所有存储过程返回给我。
@JackLock,我下载并安装了 SQL Search,但我不明白这如何解决我的问题。此工具有助于按名称搜索存储过程,或搜索存储过程中的文本,但它如何帮助我自动列出从特定存储过程中调用的所有存储过程?也许我错过了什么?例如,在我上面的示例中,我希望能够运行一个系统查询或工具,它返回一个存储过程列表,这些存储过程由我传递给它的任何存储过程名称调用。因此,在示例中,如果我提供查询或工具“build_house”,它将返回示例中的结果。
编辑/更新:
好的,我想尝试通过查询来解决这个问题,但需要一些帮助。我“认为”我想要做的是查询 sys.procedures 以获取系统中所有存储过程的名称。获得它们后,我想将它们传递给以下查询,以确定从中调用了多少存储过程:
SELECT referenced_entity_name
FROM sys.dm_sql_referenced_entities (@ProcName, 'OBJECT')
@ProcName 将为调用 sys.procedures 返回的每一行传入哪里。
在 t-sql (2008) 中执行此操作的最有效方法是什么?
提前致谢, 迈克尔
【问题讨论】:
-
这个问题解决了吗?如果是的话,你能解决这个问题吗?
标签: sql sql-server stored-procedures