Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.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
Sql server 如果foreach循环花费的时间太长,请继续下一次迭代_Sql Server_Ssis_Sql Server 2012_Ssis 2012 - Fatal编程技术网

Sql server 如果foreach循环花费的时间太长,请继续下一次迭代

Sql server 如果foreach循环花费的时间太长,请继续下一次迭代,sql-server,ssis,sql-server-2012,ssis-2012,Sql Server,Ssis,Sql Server 2012,Ssis 2012,我有一个for-each循环,它从带有查询的表中提取查询。 然后循环执行每个查询并将结果写入表。 这很有魅力。我甚至实现了当查询无法执行时的错误处理(例如,如果它确实有语法错误) 但有时执行查询会花费很长时间,例如,一个带有交叉连接的查询没有适当的困难 现在,我希望能够设置查询执行的最大持续时间。因此,查询将在x分钟后停止(如果到那时还没有完成)。 然后循环应继续进行下一个查询。 换句话说,一次迭代的时间不应该超过X分钟,之后应该继续下一次迭代 有什么想法和建议吗?您不能在服务器上设置查询超时

我有一个for-each循环,它从带有查询的表中提取查询。 然后循环执行每个查询并将结果写入表。 这很有魅力。我甚至实现了当查询无法执行时的错误处理(例如,如果它确实有语法错误)

但有时执行查询会花费很长时间,例如,一个带有交叉连接的查询没有适当的困难

现在,我希望能够设置查询执行的最大持续时间。因此,查询将在x分钟后停止(如果到那时还没有完成)。 然后循环应继续进行下一个查询。 换句话说,一次迭代的时间不应该超过X分钟,之后应该继续下一次迭代


有什么想法和建议吗?

您不能在服务器上设置查询超时

您可以创建一个客户端应用程序,在其中可以为sql命令设置

 SqlCommand command = new SqlCommand(queryString, connection);
         // Setting command timeout to 1 second
         command.CommandTimeout = 1;
         try {
            command.ExecuteNonQuery();
         }

或者尝试此操作以监视查询,并在时间用完时终止这些进程。如

所述,请以
sqlplan
格式提供您的查询和执行计划…SQL按顺序执行查询,它无法并行执行查询,您可能需要使用c#并并行执行查询,我相信SSI还能够执行子容器parallely@devart目前有462个查询。可以添加和删除查询。因此,我需要为技术上合理但将永远运行的查询制定计划。我不认为sqlplan会有帮助,因为所有这些查询只有一个共同点:SELECT。FROM、WHERE和其他组件都可能不同。@GameisWar我不理解您的建议:我希望它们按顺序运行,因为它们都插入到同一个表中,但我希望在指定的时间后停止循环,然后继续下一个循环。并行执行与此有什么关系?