2010-11-30 55 views
7

我想在所有數據庫的所有過程/函數等中搜索特定文本。我設法從這個answer創建所需的查詢,但它看起來像OBJECT_DEFINITION(OBJECT_ID(SPECIFIC_NAME))爲除當前的所有數據庫返回NULL。在所有數據庫中搜索存儲過程/函數

sp_msforeachdb 'SELECT ''?'' AS DB, SPECIFIC_NAME, OBJECT_DEFINITION(OBJECT_ID(SPECIFIC_NAME)) FROM [?].INFORMATION_SCHEMA.ROUTINES' 

回答

3

問題是OBJECT_ID無法以這種方式使用。它只適用於當前數據庫。嘗試直接從INFORMATION_SCHEMA.ROUTINES返回ROUTINE_DEFINITION。這確實有4000個字符的限制。我會嘗試在SO上找到我的其他答案,這使我可以使用MS元數據視圖解決問題。

看一看這樣的:

Can you search SQL Server 2005 Stored Procedure content?

+0

謝謝。該鏈接顯示如何使用sys.sql_modules。 – JKJKJK 2010-12-01 13:54:28

1

試試這個:

select * from syscomments where [text] like '%yourKeyword%' 
12

你絕對需要紅門的SQL Search工具 - 它是免費,絕對偉大和完美適合這種需求。

alt text

+0

這會很有用。謝謝。 – JKJKJK 2010-12-01 13:54:54

相關問題