有没有办法对它访问的表和列进行内省SQL过程?

时间:2015-02-13 15:56:18

标签: sql-server tsql procedure introspection

我发现自己需要记录SQL Server中大量存储过程访问的所有表和列。我可以搜索在正文中有这个或那个文本的存储过程,但这不是我们需要的。

1 个答案:

答案 0 :(得分:0)

有许多方法可以找到存储过程依赖项。粗略的谷歌搜索将找到你:

https://msdn.microsoft.com/en-us/library/ms345404.aspx

  

使用SQL Server Management Studio

     

在对象资源管理器中查看过程的依赖关系

     

在对象资源管理器中,连接到数据库引擎实例,然后展开该实例。

     

展开“数据库”,展开该过程所属的数据库,然后展开“可编程性”。

     

展开“存储过程”,右键单击该过程,然后单击“查看依赖关系”。

     

查看依赖于该过程的对象列表。

     

查看程序所依赖的对象列表。

     

单击“确定”。

或使用SQL:

SELECT referencing_schema_name, referencing_entity_name, referencing_id, referencing_class_desc, is_caller_dependent
FROM sys.dm_sql_referencing_entities ('table name', 'OBJECT'); 

要执行所有存储过程,您可以在sys.object上编写一个连接,以插入上面列出的DMV,并进行一些潜在的调整......但这绝对是可行的。认为可能还有一些SSMS插件也可以。红门也许?