如果 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
我有一个 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