确定存储过程的依赖关系。

时间:2012-11-29 17:17:42

标签: sql-server tsql stored-procedures dependencies proc

是否有方法(或者,理想情况下,查询)来确定存储过程访问的所有表,包括由其自身调用的其他存储过程访问的那些(以及它们调用的那些,等等。 )。

如果有人可以制作这样的查询,是否还可以确定是否访问表以进行更新,选择或删除?

是否可以确定将视图投入混合的位置?

我的存储过程不包含任何动态构造的调用,因此至少可以稍微简化它。

2 个答案:

答案 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_objectssysdepends。您可以object_iddepid加入他们。包括type - sysdepends列,您应该能够获取由SP访问的表格。

如果仍然需要,明天会看看 - 但你应该能够查看上述信息的信息!

@edit:刚看到Aaron的评论。一切都在那里解释。也许在我的案例中获得正确的依赖关系是幸运的;)