我有一个for循环,用查询从表中提取查询。 然后循环执行每个查询并将结果写入表。 这就像一个魅力。我甚至在无法执行查询时实现了错误处理(例如,如果它确实存在语法错误)。
但有时候执行查询会花费很长时间,例如一个没有适当困境的交叉连接查询。
现在我希望能够在执行查询时设置最长持续时间。这样一个查询将在x分钟后停止(如果它没有完成那么)。 然后循环应该继续下一个查询。 换句话说,迭代永远不会超过X分钟,之后它应该继续下一次迭代。
任何想法,建议?
答案 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
中所述