比方说,我有一个查询发送到我的SQL Server数据库,它需要超过30秒,我的程序引发SQL查询超时异常。查询是否仍然在我的数据库中徘徊,还是一旦抛出异常就会终止?如果超时,会发生什么情况?
回答
甲客户信号查询超时到 使用关注事件的服务器。 注意事件只是一个 不同类型的TDS数据包a服务器客户端可以发送给它的SQL 。在 除了连接/断开连接,T-SQL 批处理和RPC事件之外,客户端可以通过 注意到服务器。 注意告知服务器取消 连接当前正在执行的 查询(如果有的话)只要 可能。该注意不 回滚打开的事务,并且它 不会停止一毛钱当前执行的查询 - 服务器中止 不管它是做在下一可用 机会 连接。通常,这种情况发生得很快,但并非总是如此。
如果您收到SQL超时,则SQL停止,但是Web应用程序可能会超时并且SQL查询可能会继续。
之前执行查询时,SQL Server 估计它需要多少内存来运行 并试图从缓冲池保留的内存量 。如果 保留成功,则立即执行查询 。如果没有 足够的内存,随时可从 缓冲池,然后将查询放在 成队列超时值, 其中超时值由 查询成本导向。基本规则是: 估计成本越高,越大值越大 。 当此查询的等待时间超过 超时值时,超时错误是 抛出并且查询从 队列中删除。
通常当超时则表示连接已经死亡,这意味着该查询尚未发送到数据库中,大多数数据库支持事务处理,你就可以开始交易,运行查询,如果你感到高兴,你可以提交。
实施例:
BEGIN TRAN
UPDATE authors
SET au_fname = 'John'
WHERE au_id = '172-32-1176'
UPDATE authors
SET au_fname = 'Marg'
WHERE au_id = '213-46-8915'
COMMIT TRAN
在这种情况下,连接仍处于打开状态,但数据库处于高负载状态,导致查询需要很长时间。 – sooprise 2011-04-27 21:37:52
你在说连接超时或什么的吗?这与命令超时不同。 – 2011-04-27 21:48:25
我的观点是,如果他与服务器建立连接,并且他需要确保他们转到实际的数据库,那么使用事务将有助于防止有时可能由于超时而导致的错误 – RobertPitt 2011-04-27 21:55:44
当客户决定该命令已运行足够长的时间,它会发出“中止”。查询只是停止在数据库中运行。
任何CATCH块都不会被命中,即使连接关闭,因为“close”表示“返回到连接池”,事务将保持打开状态,并且在此之后锁仍然可以保持分配状态。
如果你期望很多命令超时的则可以考虑使用SET XACT_ABORT ON(and this too)是将释放锁,并回滚事务。或修复代码...
- 1. 如果会话超时,global.asax中的session_start会发生什么情况?
- 2. 超过MaxKeepAliveRequests限制时会发生什么情况?
- 3. 发生病情时会发生什么情况?
- 4. 如果CFile :: Write引发异常会发生什么情况?
- 5. 如果我的IExceptionPublisher引发异常,会发生什么情况?
- 6. 如果finally块引发异常,会发生什么情况?
- 7. 如果在SqlDataReader之前关闭SqlConnection,会发生什么情况?
- 8. 如果我使用printf(“one \ 0two”),会发生什么情况;?
- 9. TFS - 如果我删除工作区会发生什么情况?
- 10. 如果浏览器不支持gzip,会发生什么情况?
- 11. 如果NSURLCache已满,会发生什么情况?
- 12. 如果未安装代码合同,会发生什么情况?
- 13. 如果打开失败会发生什么情况?
- 14. 如果php.ini丢失,会发生什么情况?
- 15. 如果不使用Xmx会发生什么情况?
- 16. 如果MySQL数据库未关闭,会发生什么情况?
- 17. minimax:如果min不起作用会发生什么情况
- 18. 如果未捕获到异常,会发生什么情况?
- 19. 如果堆栈内存变满,会发生什么情况
- 20. 如果Web服务更改参数会发生什么情况?
- 21. 如果决策器未运行,会发生什么情况
- 22. 如果消息在MQ中回滚会发生什么情况?
- 23. 如果minSdkVersion低于targetSdkVersion,会发生什么情况?
- 24. 如果DTD链接无处可逃,会发生什么情况?
- 25. 如果我不指定targetFramework =“4.0”,会发生什么情况?
- 26. 如果您打破Lock()语句,会发生什么情况?
- 27. 大型资源创建请求超时时会发生什么情况?
- 28. 当SQL DELETE查询超时时,数据会发生什么情况?
- 29. 如果在rootfs上发生内存泄漏,会发生什么情况?
- 30. 如果您杀死长时间运行的alter query,会发生什么情况?
在问题中提及30秒表示OP询问命令超时(来自客户端)而不是内存授予超时或锁定超时。 – 2011-04-27 21:32:25
内存授予超时与ADO.Net客户端请求超时不同,即OP所指的30秒 – 2011-04-27 22:32:25