是否有方法(或者,理想情况下,查询)来确定存储过程访问的所有表,包括由其自身调用的其他存储过程访问的那些(以及它们调用的那些,等等。 )。
如果有人可以制作这样的查询,是否还可以确定是否访问表以进行更新,选择或删除?
是否可以确定将视图投入混合的位置?
我的存储过程不包含任何动态构造的调用,因此至少可以稍微简化它。
答案 0 :(得分:2)
试试这个链接:
how-to-find-all-dependencies-of-a-table-in-sql-server
或此搜索文字:
DECLARE @Search varchar(255)
SET @Search='cost_centre'
SELECT DISTINCT
o.name AS Object_Name,o.type_desc
FROM sys.sql_modules m
INNER JOIN sys.objects o ON m.object_id=o.object_id
WHERE m.definition Like '%'+@Search+'%'
ORDER BY 2,1
答案 1 :(得分:0)
我目前无法访问sql-server,但我知道你可以检查dependecies - 我已经完成了这项工作,确定访问表的视图。
查看sys.all_objects
和sysdepends
。您可以object_id
和depid
加入他们。包括type
- sysdepends
列,您应该能够获取由SP访问的表格。
@edit:刚看到Aaron的评论。一切都在那里解释。也许在我的案例中获得正确的依赖关系是幸运的;)