在T-SQL中设置查询超时

时间:2017-02-10 16:11:19

标签: sql-server tsql timeout

我正在从应用程序执行对SQL Server的查询。有时其中一个查询会持续很长时间。实际上太长了,它通常表明它最终会失败。我想指定一个最大持续时间,之后查询应该失败。

有没有办法在T-SQL中指定命令超时

我知道可以在连接字符串中设置(连接和)命令超时。但是在这个应用程序中我无法控制连接字符串。即使我可以,其他查询也应该更长。

3 个答案:

答案 0 :(得分:1)

您的DBA可以将超时设置为链接服务器以及查询,但直接查询不允许您自己执行此操作。我会遇到的更大问题是为什么查询失败?服务器上是否已经存在预设超时(希望如此),是否内存和分页耗尽,或者是其他任何原因造成的。你有DBA吗?因为如果我的一台服务器受到这样糟糕的代码的打击,我会联系正在执行它的人。如果他没有,你应该联系并寻求帮助来确定失败的原因。

答案 1 :(得分:0)

据我所知,除非在连接字符串中指定(您不能这样做)或者查询是通过链接服务器执行的,否则不能限制查询时间。

答案 2 :(得分:0)

如果意外的长持续时间恰好是由于(本地)锁定造成的,那么 是一种突破它的方法。在运行查询之前设置锁定超时:

SET LOCK_TIMEOUT 600000 -- Wait 10 minutes max to get the lock.

不要忘记之后再将其设置为防止后续查询连接超时:

SET LOCK_TIMEOUT -1 -- Wait indefinitely again.