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 タイムアウトが発生します。のtcpタイムアウトを減らす方法を知っている人はいSqlConnectionますか?

4

2 に答える 2

1

その接続タイムアウトをどこでどのように指定しましたか?

これを EF 接続文字列に追加してみました (EF データベース ファーストを使用) - 期待どおりに動作します。

<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=xx秒単位、0より大きい値は問題ありません) 。provider connection string=

于 2013-02-12T21:39:00.737 に答える
0

DbContext クラスのコンストラクターに次のコードを追加します。

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