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

时间:2010-11-30 22:00:49

标签: sql sql-server-2005

我想在所有数据库的所有程序/功能等中搜索特定文本。我设法从这个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 个答案:

答案 0 :(得分:12)

你绝对需要Red-Gate的 SQL Search 工具 - 它是免费,绝对非常适合这种需求。

alt text

答案 1 :(得分:3)

问题是OBJECT_ID不能以这种方式使用。它只适用于当前数据库。尝试直接从INFORMATION_SCHEMA.ROUTINES返回ROUTINE_DEFINITION。这个限制为4000个字符。我将尝试在SO上找到我的另一个答案,它使用MS元数据视图提供了我的解决方法。

看看这个:

Can you search SQL Server 2005 Stored Procedure content?

答案 2 :(得分:1)

试试这个:

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