【问题标题】:understanding SQL Server timeouts了解 SQL Server 超时
【发布时间】:2012-08-02 12:31:04
【问题描述】:

使用实体框架并有几个关于超时的问题。

下面这篇文章http://blogs.msdn.com/b/khen1234/archive/2005/10/20/483015.aspx

A client signals a query timeout to the server using an attention event. An attention 
event is simply a distinct type of TDS packet a SQL Server client can send to it. 

所以 SQL Server 本身(没有调控器)不能尊重发出的命令的超时并在超时到期后将其杀死。以以下查询为例

var x = objectContext.Employees.Select(e => e.FirstName);

我们发出查询 - 如果我们假设查询需要 40 秒才能完成并且默认命令超时为 30 秒。什么时候触发注意事件?

A) 30 秒?

B) 40 秒后(当查询在 40 秒后返回时,EF 检查是否大于默认值,然后抛出异常)?

这里我还假设代码也会抛出 SqlException 并自动触发注意事件。

【问题讨论】:

    标签: sql-server sql-server-2008 entity-framework tsql transactions


    【解决方案1】:

    30 秒。将超时量视为“等待时间不超过...”

    超时将触发SqlException。 “注意事件”的级别低于此。

    客户端(EF 或其他)跟踪查询,并在超时后通知服务器它不再对结果感兴趣,并引发异常。您的客户端代码应该适当地处理该异常。

    【讨论】:

    • 为这个幼稚的问题道歉 - 所以您的意思是实体框架会跟踪发出的查询并在 30 秒后发出注意事件?
    • 查看编辑,但老实说,我不会担心它是如何做到的:),只是当你超过时间时,你会得到一个例外。但如果你真的有兴趣...blogs.msdn.com/b/psssql/archive/2008/07/23/…
    猜你喜欢
    • 1970-01-01
    • 2016-05-03
    • 2015-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-04
    • 2012-07-06
    • 2012-07-28
    相关资源
    最近更新 更多