如何在sql中查找不同数据库的存储过程中使用的表和视图?

时间:2014-10-29 09:14:21

标签: sql sql-server-2008 stored-procedures

我需要找到存储过程中使用的表和视图,其中表和视图可能属于不同的数据库。

有什么方法可以找到吗?

例如:如果我有sp“dbo.a”

我必须找到其中使用的表格和视图。

表和视图可能来自不同的数据库。

2 个答案:

答案 0 :(得分:1)

您可以使用sys.dm_sql_referenced_entities,例如

SELECT  *
FROM    sys.dm_sql_referenced_entities(N'dbo.YourProcedure', N'OBJECT');

答案 1 :(得分:0)

可能没有简单的方法来执行此操作。您需要做的是在数据库中找到包含所有存储过程的代码的表或其他一些读取它们的方法。

然后你需要为你的数据库编写一个SQL解析器。然后解析器可以读取存储过程的源并生成一些数据结构(通常是Abstract Syntax Tree),您可以遍历它以查找它引用的所有表。