如何在数据库中的所有存储过程中查找所有特定文本?

时间:2013-04-29 12:23:10

标签: sql sql-server sql-server-2008

我需要确定是否可以生成存储过程列表,其中存储过程源代码包含特定文本,例如“table_name”。

提前致谢。

5 个答案:

答案 0 :(得分:3)

在syscomments中查看文本并加入sysobjects以获取对象类型和名称

sysobjects

syscomments

答案 1 :(得分:3)

存储过程文本(也包括视图,函数和触发器)在SQL 2008中的sys.sql_modules中捕获。

试试这个:

select object_name(object_id)
from sys.sql_modules
where definition like '%table_name%'

这将显示名称旁边的实际对象类型:

select b.name, b.type_desc
from sys.sql_modules a
join sys.objects b      on a.object_id = b.object_id
where a.definition like '%table_name%'

答案 2 :(得分:2)

如果要在Sql server中列出与存储过程相关的特定表,请右键单击特定表并单击视图依赖项,这将列出所有相关项,包括存储过程

答案 3 :(得分:2)

试试这个 -

SELECT *
FROM sys.dm_sql_referencing_entities ('dbo.table1', 'OBJECT');

答案 4 :(得分:2)

如果您使用SSMS,这是一个更好的工具 - 而且它是免费的! RedGate使SQL搜索实用程序SQLSearch非常棒。它可以让您搜索表名,列名,存储过程,函数以及您可以查找的所有内容。它将在多个数据库中完成。我喜欢所有的RedGate工具。

我提到它是免费的吗?强烈推荐。