2016-03-02 32 views
1

我有一个查询从表中拉出查询的每个循环。 循环然后执行每个查询并将结果写入表中。 这工作就像一个魅力。我什至不能执行查询时执行错误处理(如果它例如确实有语法错误)。继续下一次迭代,如果foreach循环花费太长的时间

但是,有时执行查询将永远持续下去,例如具有交叉连接的查询而没有适当的困境。

现在我想能够设置查询执行的最大持续时间。这样一个查询将在x分钟后停止(如果它没有在那之前完成)。 循环应该继续下一个查询。 换句话说,迭代永远不会超过X分钟,之后它应该继续下一次迭代。

任何想法,建议?

+0

提到请提供您的查询和执行计划中'sqlplan'格式...... – Devart

+0

SQL依次执行查询,它不能做执行并行查询,你可能需要去为C#和并行执行的查询,我相信ssis也能够并行执行子容器 – TheGameiswar

+0

@devart此时此刻有462个查询。查询可能会被添加和删除。所以我需要计划技术上合理的查询,但这种查询会永久运行。我不认为sqlplan会有所帮助,因为所有这些查询只有一个共同点:SELECT。 FROM,WHERE和其他组件可能都不相同。 – Henrov

回答

1

CANT设置服务器上的查询超时。

要么你创建一个客户端应用程序,你可以设置一个timeout的SQL命令

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

或者试试这个External Tool监控查询并杀死这些进程,当时间用完。作为dba.stackexchange

+0

卡洛斯,它看起来好像你是对的:( – Henrov

相关问题