我是一个大量使用存储过程(500+)的公司的新手。为了帮助学习该系统,我希望有一种简单的方法来构建树型列表,该列表显示系统中的所有存储过程以及它们自己调用的存储过程...因此创建可以执行的存储过程的映射。有没有一种简单的方法通过SQL Server中的查询来完成此操作?有没有可以做到这一点的工具/实用工具?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”,它将返回示例中的结果。
编辑/ UPDATE:
OK,我想试着和查询解决这个问题,但需要一些帮助。我“认为”我想要做的是查询sys.procedures以获取我系统中所有存储过程的名称。一旦我有他们,我想然后将它们传递到下面的查询,以确定从有多少存储过程被调用:
SELECT referenced_entity_name FROM sys.dm_sql_referenced_entities(@procname,“对象”)
在哪里@ProcName将传入由sys.procedures调用返回的每一行。
在t-sql(2008)中这样做的最有效方法是什么?
由于提前, 迈克尔
我使用SQL Server 2008的我没有意识到展鹏有任何免费工具。我会去看看。谢谢。! –
请参阅上面包含的编辑。 –
@MichaelLeone对不起,我误解了你的要求。我的印象是,你正在寻找一个工具/脚本,让你搜索特定的数据库对象(在你的情况下是一个SP),并显示该对象正在使用的地方的列表。 – JackLock