有沒有辦法掃描SQL Server來查找所有存儲過程,讀取它們的正文並確定它們使用的表的列表?我的目的是對大型遺留數據庫執行分析。 (SQL服務器2008 R2,最好是C#,但語言是無關緊要)。解析存儲過程
Q
解析存儲過程
3
A
回答
3
充分利用SQL Server的sp_depends
系統存儲過程。
1)獲取所有存儲過程的列表。
select specific_name from information_schema.routines
where routine_type='PROCEDURE' and specific_name not like 'sp_%'
2)使用與sp_depends
沿着這個列表,並插入其結果插入表中。
declare @t table([name] varchar(50),[type] varchar(50),
updated varchar(10),selected varchar(10),[column] varchar(50))
insert into @t exec sp_depends 'MyProc1';
insert into @t exec sp_depends 'MyProc2';
insert into @t exec sp_depends 'MyProc3';
select [name] from @t group by [name];
0
0
我想這可能工作:
SELECT routine_name, routine_definition FROM information_schema.routines WHERE routine_definition in (SELECT '%' +name+ '%' FROM sys.tables) AND routine_type IN ('function', 'pocedure')
0
是對於前兩點是肯定的:
SELECT
pr.Name,
mod.Definition
FROM sys.procedures pr
INNER JOIN sys.sql_modules mod ON pr.object_id = mod.object_id
一旦你的存儲過程體(在sql_modules
,列definition
),您可以解析它 - 但這將有點凌亂至多 - 不知道是否有更方便的方法來做到這一點...
相關問題
- 1. SQL存儲過程解析
- 2. 解析存儲過程中的xml oracle
- 3. MySQL存儲過程 - 使用PHP解析
- 4. 解析字符串的存儲過程
- 5. postgresql存儲過程輸入json解析
- 6. MYSQL中的XML解析存儲過程
- 7. TSQL在存儲過程中解析XML
- 8. 瞭解Oracle存儲過程
- 9. 解析Oracle存儲過程中的base64 X509證書?
- 10. 解析逗號(,)字符串存儲過程
- 11. 解析數據庫中的所有存儲過程
- 12. C#如何解析存儲過程字符串
- 13. 解析XML文檔SQL服務器內存儲的過程
- 14. 如何解析節點js中SQL存儲過程的輸出?
- 15. 解析數據庫中的存儲過程
- 16. 使用Mule ESB解析MySQL存儲過程結果集
- 17. 解析PL/SQL存儲過程中的字符串
- 18. 從存儲過程中放置輸出參數解析
- 19. 從存儲過程解析返回值到表/變量
- 20. SQL Server存儲過程中的XML解析錯誤
- 21. sqlalchemy存儲過程執行的解析結果
- 22. 分析服務存儲過程性能
- 23. 解析和存儲類
- 24. 解析不存儲字段
- 25. 存儲和解析CSS/JS
- 26. 想了解在存儲過程分裂()
- 27. 深入地理解存儲過程
- 28. 解釋存儲過程中的字節[]
- 29. 請解決Oracle存儲過程錯誤
- 30. MySQL - 分解輸入到存儲過程
Answer也許在這裏編輯? http://stackoverflow.com/questions/1916489/how-to-write-a-query-for-sql-server-2008-that-returns-the-dependencies-of-an-obj –
一些提示在這裏的評論:http://forums.asp.net/t/1225902.aspx我們在我們的數據庫做類似的事情,雖然我們已經修改它使用一些專有代碼,所以我不能發佈它。我們的版本讓我們可以搜索服務器上的所有數據庫,或者只搜索我們使用變量發送的數據庫。 。 – HLGEM