首页 > 解决方案 > 解析 SQL 脚本以查找表依赖项和输出

问题描述

我目前有一大组 sql 脚本将数据从一个表转换到另一个表,通常是分步进行的,例如

select input3.id as cid
    , input4.name as cname
into #temp2
from input3
inner join input4
    on input3.match = input4.match
where input3.regdate > '2019-01-01';

truncate table output1;

insert into output1 (customerid, customername)
select cid, cname from #temp2;

我想将这些脚本“解析”成它们的基本输入和输出

in: input3, input4
out: output1

(不一定是这种格式,只是这个信息)

错误地标记临时表不是问题:

in: input3, input4, #temp2
out: #temp2, output1

花一点时间是可以的,但越自动化越好。

如何做到这一点?

我尝试过的事情包括

标签: sql-server

解决方案


我通常将脚本的内容包装到存储过程中,并将它们部署到表所在的同一个数据库中。如果您对 (power)shell 脚本和正则表达式足够熟悉,您甚至可以编写代码来为您完成这些工作。

从这一点开始,您有一些选择:

  • 如果您需要完整的使用/参考报告,或者它是一次性任务,您可以利用sys.sql_expression_dependencies或其他类似的系统视图;
  • 从该数据库创建 SSDT 数据库项目。在使数据库开发更容易和更一致的许多其他方面,SSDT 具有“查找所有引用”功能(Shift+F12热键),它显示代码中特定对象(或列)的所有引用。

AFAIK 他们都没有看穿动态 SQL,所以如果你有很多,你将不得不寻找其他地方。


推荐阅读