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

JKJ*_*KJK 7 sql sql-server-2005

我想在所有数据库中的所有过程/函数等中搜索特定文本.我设法从这个答案创建所需的查询,但看起来OBJECT_DEFINITION(OBJECT_ID(SPECIFIC_NAME))为除当前数据库之外的所有数据库返回NULL.

sp_msforeachdb 'SELECT ''?'' AS DB, SPECIFIC_NAME, OBJECT_DEFINITION(OBJECT_ID(SPECIFIC_NAME)) FROM [?].INFORMATION_SCHEMA.ROUTINES'
Run Code Online (Sandbox Code Playgroud)

mar*_*c_s 12

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

替代文字


Cad*_*oux 3

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

看看这个:

您可以搜索 SQL Server 2005 存储过程内容吗?