我有一个 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上提到的