表中存储过程列表

Vin*_*nod 8 sql sql-server stored-procedures

我有一个包含100个表和存储过程的庞大数据库.使用SQL Server 2005,如何获取正在对给定表执行插入或更新操作的存储过程列表.

Con*_*lls 14

sys.sql_dependencies具有依赖项的实体列表,包括sproc在查询中包含的表和列.有关获取依赖项的查询示例,请参阅此文章.下面的代码片段将按存储过程获取表/列依赖项列表

select sp.name       as sproc_name
      ,t.name        as table_name
      ,c.name        as column_name
 from sys.sql_dependencies d
 join sys.objects t
   on t.object_id = d.referenced_major_id
 join sys.objects sp
   on sp.object_id = d.object_id
 join sys.columns c
   on c.object_id = t.object_id
  and c.column_id = d.referenced_minor_id
where sp.type = 'P'
Run Code Online (Sandbox Code Playgroud)


Luk*_*ett 10

select
  so.name,
  sc.text
from
  sysobjects so inner join syscomments sc on so.id = sc.id
where
  sc.text like '%INSERT INTO xyz%'
  or sc.text like '%UPDATE xyz%'
Run Code Online (Sandbox Code Playgroud)

这将为您提供所有存储过程内容的列表,其中包含针对特定表的INSERT或UPDATE(您显然可以调整查询以适应).此外,更长的过程将在返回的记录集中的多行中断开,因此您可能需要对结果进行一些手动筛选.

编辑:调整查询以返回SP名称.另外,请注意上面的查询将返回任何UDF以及SP.