我需要确定是否可以生成存储过程列表,其中存储过程源代码包含特定文本,例如“table_name”。
提前致谢。
存储过程文本(还有视图、函数和触发器)在 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%'
如果您想列出与存储过程相关的特定表,而不是在 Sql server 中右键单击特定表并单击查看依赖项,这将列出所有依赖项,包括存储过程
试试这个——
SELECT *
FROM sys.dm_sql_referencing_entities ('dbo.table1', 'OBJECT');
如果您使用的是 SSMS,这里有一个更好的工具——而且它是免费的!RedGate 制作了一个很棒的 SQL 搜索实用程序SQLSearch。它可以让你搜索表名、列名、存储过程、函数,几乎所有你能找到的东西。它将跨多个数据库执行此操作。我喜欢所有的 RedGate 工具。
我有没有提到它是免费的?强烈推荐。