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



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

但有时执行查询需要很长时间,例如,具有交叉连接的查询没有适当的困境。

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

有什么想法,建议吗?

您可以服务器上的查询设置超时。

创建客户端应用,在其中设置 sql 命令的超时

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

或者尝试使用此外部工具来监视查询并在时间用完时终止这些进程。正如dba.stackexchange上提到的

最新更新