我将T-SQL查询存储在硬盘驱动器上:I:\queries\query1.sql
和I:\queries\query2.sql
。
我的工作方式通常是从驱动器执行查询,然后将结果复制到Excel
,然后我就可以了。
我的问题是,query1.sql
已经很长了,现在我希望通过获得query2.sql
的结果来扩展它,并加入query1.sql
的结果。< / p>
我可以做的是将query2.sql
的代码附加到query1.sql
。但随后查询变得非常冗长且难以维护。
我想做这样的事情:
SELECT * FROM ("Result of I:\queries\query1.sql") q1
LEFT JOIN ("Result of I:\queries\query2.sql") q2 ON q1.ID=q2.ID
有没有办法编写查询或存储过程,它将再次存储在驱动器上执行此操作?
答案 0 :(得分:3)
基本上,当 能够在数据库中存储内容时,您需要向DBA询问数据库。这可以在存储数据的同一系统上。或者,它可能在链接系统上。天哪,你可以在本地运行SQL Server并在那里存储信息和数据。
然后,您存储在文件中的查询应该是数据库中的视图。然后,您可以运行查询并在本地存储和组合结果。
您实际上是使用文本文件和数据文件重新创建数据库功能 - 当SQL Server已经支持此功能时需要付出很多努力。
答案 1 :(得分:1)
要扩展Gordon的评论(+1),为什么您是否在驱动器上运行脚本?我所知道的大多数DBA都会因为执行无法控制/排除/查看源代码控制的代码而对其造成身体伤害,从而带来了大量的安全性和可支持性问题。
更好地将此代码存储在存储过程中,该存储过程将具有已保存的查询执行计划,可以使用各种DMV进行跟踪,并具有分配给它的权限,然后您的外部Excel文档可以只设置连接并执行SP。