SQL查询中引用的列的反向工程列表

时间:2016-11-15 10:32:33

标签: sql sql-server reference views

我有SQL查询,我想知道查询中引用了哪些表和列。例如,从

USE AdventureWorks
GO
SELECT t.name AS table_name,
SCHEMA_NAME(schema_id) AS schema_name,
c.name AS column_name
FROM sys.tables AS t
INNER JOIN sys.columns c ON t.OBJECT_ID = c.OBJECT_ID
WHERE c.name LIKE '%EmployeeID%'
ORDER BY schema_name, table_name;

我想知道从sys.tables,列 name ,OBJECT_ID被引用等等; sys.columns引用了OBJECT_ID和 name

我从查询/视图定义中获得的真实查询远不止于此,但这只是一个例子。

无论如何我能做到这一点吗? 非常感谢。

1 个答案:

答案 0 :(得分:0)

执行此操作的唯一方法是解析SQL脚本本身并返回表和列。有许多付费解决方案可以为您执行此操作,例如General SQL Parser(加上更多via google,例如基于免费python的SQLParse),或者您只需要执行此操作有几次你可以在这里使用他们的在线演示版:http://107.170.101.241:8080/getTableColumn/(来自here的顶部链接)。

显然,您可以使用SMO等工具编写自己的解决方案,或者只是尝试构建自己的逻辑,但这需要付出很多努力......