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.