0

有没有办法(或者,理想情况下,查询)来确定存储过程访问的所有表,包括由它自己调用的其他存储过程访问的那些表(以及它们调用的那些,等等。在调用堆栈中)。

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

是否有可能确定相同的观点被投入到混合中?

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

4

2 回答 2

2

试试这个链接:

如何在 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
于 2013-09-06T02:53:30.170 回答
0

我目前无法访问 sql-server,但我知道您可以检查依赖项 - 我已经这样做了,确定访问表的视图。

看看sys.all_objectssysdepends。你可以加入他们object_iddepid。包括type-column sysdepends,您应该能够获取由 SP 访问的表。

明天会看看,如果仍然有必要的话 - 但你应该能够检查上述信息来获取你的信息!

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

于 2012-11-29T20:11:18.113 回答