我是一個大量使用存儲過程(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