在所有数据库中搜索存储过程/函数

问题描述:

我想在所有数据库的所有过程/函数等中搜索特定文本。我设法从这个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' 

问题是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

试试这个:

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

你绝对需要红门的SQL Search工具 - 它是免费,绝对伟大和完美适合这种需求。

alt text

+0

这会很有用。谢谢。 – JKJKJK 2010-12-01 13:54:54