有没有办法(或者,理想情况下,查询)来确定存储过程访问的所有表,包括由它自己调用的其他存储过程访问的那些表(以及它们调用的那些,等等。在调用堆栈中)。
如果有人可以制造这样的查询,是否还可以确定是否访问表以进行更新、选择或删除?
是否有可能确定相同的观点被投入到混合中?
我的存储过程不包含任何动态构造的调用,因此至少稍微简化了它。
有没有办法(或者,理想情况下,查询)来确定存储过程访问的所有表,包括由它自己调用的其他存储过程访问的那些表(以及它们调用的那些,等等。在调用堆栈中)。
如果有人可以制造这样的查询,是否还可以确定是否访问表以进行更新、选择或删除?
是否有可能确定相同的观点被投入到混合中?
我的存储过程不包含任何动态构造的调用,因此至少稍微简化了它。
试试这个链接:
或者这个来搜索文本:
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
我目前无法访问 sql-server,但我知道您可以检查依赖项 - 我已经这样做了,确定访问表的视图。
看看sys.all_objects
和sysdepends
。你可以加入他们object_id
和depid
。包括type
-column sysdepends
,您应该能够获取由 SP 访问的表。
明天会看看,如果仍然有必要的话 - 但你应该能够检查上述信息来获取你的信息!
@edit:刚刚看到Aaron的评论。一切都在那里解释。也许在我的情况下获得正确的依赖关系是幸运的;)