当前位置:  开发笔记 > 数据库 > 正文

表中存储过程列表

如何解决《表中存储过程列表》经验,为你挑选了2个好方法。

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



1> ConcernedOfT..:

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'



2> Luke Bennett..:
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%'

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

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

推荐阅读
路人甲
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有