Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从硬盘执行T-sql查询_Sql_Sql Server_Tsql - Fatal编程技术网

从硬盘执行T-sql查询

从硬盘执行T-sql查询,sql,sql-server,tsql,Sql,Sql Server,Tsql,我将T-SQL查询存储在硬盘上:I:\querys\query1.SQL和I:\querys\query2.SQL 我的工作方式通常是从驱动器执行查询,然后将结果复制到Excel,然后处理它 我这里的问题是query1.sql已经很长了,现在我想通过获取query2.sql的结果来扩展它,并将其与query1.sql的结果连接起来 我可以做的是将query2.sql中的代码附加到query1.sql。但是查询变得很长,很难维护 我想这样做: SELECT * FROM ("Result of I

我将T-SQL查询存储在硬盘上:
I:\querys\query1.SQL
I:\querys\query2.SQL

我的工作方式通常是从驱动器执行查询,然后将结果复制到
Excel
,然后处理它

我这里的问题是
query1.sql
已经很长了,现在我想通过获取
query2.sql
的结果来扩展它,并将其与
query1.sql
的结果连接起来

我可以做的是将
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

有没有办法编写一个查询或存储过程,并将其再次存储在驱动器上执行此操作?

基本上,当您能够在数据库中存储内容时,您需要向DBA请求一个数据库。这可以在存储数据的同一系统上。或者,它可以在一个链接系统上。天哪,您可以在本地运行SQL Server并将信息和数据存储在那里

然后,存储在文件中的查询应该是数据库中的视图。然后可以运行查询,并在本地存储和合并结果


基本上,您是在使用文本文件和数据文件重新创建数据库功能——当SQL Server已经支持此功能时,您需要付出大量的努力。

基本上,当您能够在数据库中存储内容时,您需要向DBA请求数据库。这可以在存储数据的同一系统上。或者,它可以在一个链接系统上。天哪,您可以在本地运行SQL Server并将信息和数据存储在那里

然后,存储在文件中的查询应该是数据库中的视图。然后可以运行查询,并在本地存储和合并结果


基本上,您是在使用文本文件和数据文件重新创建数据库功能——当SQL Server已经支持此功能时,您需要花费大量精力。

要扩展Gordon的评论(+1),为什么要在驱动器上运行脚本?据我所知,大多数DBA都会将身体伤害视为执行他们无法控制/排除故障/查看源代码控制的代码带来了一系列安全性和可支持性问题


最好将此代码存储在一个存储过程中,该存储过程将有一个保存的查询执行计划,可以使用各种DMV进行跟踪,并为其分配权限,然后您的外部Excel文档只需设置一个连接并执行SP。

即可展开Gordon的注释(+1),为什么要在驱动器上运行脚本?据我所知,大多数DBA都会将身体伤害视为执行他们无法控制/排除故障/查看源代码控制的代码带来了一系列安全性和可支持性问题


最好将此代码存储在一个存储过程中,该存储过程将有一个保存的查询执行计划,可以使用各种DMV进行跟踪,并为其分配权限,这样您的外部Excel文档就可以设置一个连接并执行SP。

将它们存储在硬盘上有点奇怪,为什么不把它们存储在数据库中呢?为什么一开始就要写这样的查询?这似乎是个奇怪的想法。如果将它们存储在RDBMS中,则可以使用视图、存储过程和函数。这将使您的生活变得无限轻松。理想情况下,您可以将查询组合在一起,让数据库系统担心它是否可以/应该存储中间结果等。您目前的想法非常循序渐进(首先我会做(a),然后我会做(b),等等),这不是使用集合的正确心态。我这样做是因为我不允许存储在RDBMS中。我只有读权限。我知道这不是一个最好的方法,但我希望至少尽可能高效。视图更易于重用,但由于我们不知道查询是什么样子,因此可能不可能将其存储在硬盘上。这有点奇怪,为什么不将其存储在数据库中?为什么一开始就编写这样的查询?这似乎是个奇怪的想法。如果将它们存储在RDBMS中,则可以使用视图、存储过程和函数。这将使您的生活变得无限轻松。理想情况下,您可以将查询组合在一起,让数据库系统担心它是否可以/应该存储中间结果等。您目前的想法非常循序渐进(首先我会做(a),然后我会做(b),等等),这不是使用集合的正确心态。我这样做是因为我不允许存储在RDBMS中。我只有读权限。我知道这不是最好的方法,但我希望至少尽可能高效。视图更易于重用,但由于我们不知道查询是什么样子,这可能不太可能。这很常见,我为像我这样的非IT人员工作。我要么运行存储在驱动器上的查询,要么通过Excel或R的连接运行查询(在这里我必须硬编码查询)。这是很常见的,我为像我这样的非IT人员工作。我要么运行存储在驱动器上的查询,要么通过Excel或R的连接运行查询(在这里我必须硬编码查询)。