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

continue with next iteration if foreach loop takes too long

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

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

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

有什么想法、建议吗?

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

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

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

或者试试这个External Tool to monitor query and kill those process when time run out. As mentioned on dba.stackexchange