了解SQL Server超时

时间:2012-08-02 12:31:05

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

使用Entity框架并在超时方面提出了几个问题。

以下文章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并自动触发一个注意事件。

1 个答案:

答案 0 :(得分:1)

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

超时将触发SqlException。 “关注事件”的程度低于此。

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