5

我想与我的 SQL Server 建立数据库连接快速失败。如何减少超时?我试过添加Connection Timeout=1我的连接字符串,但这似乎没有什么区别。

使用Connection Timeout=500时,超时大约需要 8 分 30 秒。这是意料之中的。使用Connection Timeout=1,超时大约需要 40 秒,这比预期的要长得多。

我找到了该EntityConnection.ConnectionTimeout属性,但它是只读的。我还能做些什么来减少这个超时吗?这是实体的问题吗?

更新:这是我的连接字符串。超时仍需要约 40 秒。

<add name="KofaxAdminToolsEntities" connectionString="metadata=res://*/DB.Model.KofaxAdminTools.csdl|res://*/DB.Model.KofaxAdminTools.ssdl|res://*/DB.Model.KofaxAdminTools.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=MY_DATASOURCE;initial catalog=MY_CATALOG;persist security info=True;user id=MY_USER;password=MY_PASSWORD;MultipleActiveResultSets=True;App=EntityFramework;Connection Timeout=1&quot;" providerName="System.Data.EntityClient" />

更新2:所以我发现超时是tcp timeout,而不是sql connect timeout。如果我的机器能够访问主机,@marc_s 解决方案会起作用,但是,由于我无法访问该主机,tcp 超时就会起作用。有谁知道如何减少 a 的 tcp 超时SqlConnection

4

2 回答 2

1

您在哪里以及如何指定连接超时?

我刚刚尝试将其添加到我的 EF 连接字符串中(首先使用 EF 数据库) - 它按预期工作:SQL Server 服务停止后,连接尝试几乎立即超时......

<add name="myEntities" 
     connectionString="metadata=res://*/People.csdl|res://*/People.ssdl|res://*/People.msl;provider=System.Data.SqlClient;
             provider connection string=&quot;data source=.;initial catalog=mydb;
             integrated security=True;connect timeout=1;multipleactiveresultsets=True;
                                      ***************** 
             App=EntityFramework&quot;" 
     providerName="System.Data.EntityClient" />

为了清楚起见,EF 连接字符串被分解和包裹——这只是你的一根长线web.config

您需要在EF 连接字符串的值connect timeout=x添加(x以秒为单位,任何大于 0 的值都可以) 。provider connection string=

于 2013-02-12T21:39:00.737 回答
0

将以下代码放入 DbContext 类的构造函数中:

((IObjectContextAdapter)this).ObjectContext.CommandTimeout = 1;
于 2013-02-12T21:25:54.733 回答