如果foreach循环耗时太长,则继续下一次迭代

时间:2016-03-02 15:05:37

标签: sql-server ssis sql-server-2012 ssis-2012

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

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

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

任何想法,建议?

1 个答案:

答案 0 :(得分:1)

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

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

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

或者尝试使用此External Tool来监控查询并在时间用完时终止这些进程。正如 dba.stackexchange

中所述