0

SQL データベースに Enterprise Library Data を使用しています。バージョン3.1を使用しています。このコードを使用して、実行時間の長い sp (約 1 分) を実行しています。

Dim db As SqlDatabase = New SqlDatabase(System.Web.Configuration.WebConfigurationManager.ConnectionStrings("portalConnection").ConnectionString)
                    db.ExecuteNonQuery("spnametoexecute")

接続文字列は次のようになります

<add name="portalConnection" connectionString="Server=IP;Database=DBName;uid=User;pwd=PWD; Timeout=180;"
  providerName="System.Data.SqlClient" />

問題は、常にタイムアウト例外が発生することです。何故ですか ?

System.Data.SqlClient.SqlException: Timeout expired.  The timeout period elapsed prior to completion of the operation or the server is not responding.
4

4 に答える 4

2

さて、いくつかの可能性があります:

  • クエリが複雑すぎて時間がかかりすぎます (より適切な TSQL を作成するか、インデックスを追加するか、タイムアウトを増やしてください)。
  • あなたは別の SPID によってブロックされています (おそらく別の接続であなた自身)

多くの場合、問題は 2 番目です。ブロックなど (sp_who / sp_who2) を見て、ブロックがあるかどうかを確認します。そして、トレース/プロファイラーを使用して最初のオプションを調査します。

于 2009-04-28T13:07:30.557 に答える
0

私はエンタープライズ データ ライブラリにあまり詳しくありませんが、SqlDatabase オブジェクトにタイムアウト プロパティがあるかどうかを確認したいと思います。コードでタイムアウトを設定して、動作をテストしてみてください。

于 2009-04-28T16:30:28.213 に答える
0

間違ったサーバー IP を設定したか、サーバーも構成されていないと思います。サーバーの構成でパイプと tcp/ip を許可しているかどうかを確認します。忘れることが多いです。

于 2009-04-28T13:06:49.140 に答える
0

常にタイムアウトを取得しますか、それとも長時間実行クエリが実行されたときのみですか? 手動で実行する場合、つまり管理スタジオで実行する場合、どのくらいの時間がかかりますか? 接続は 3 分でタイムアウトするように設定されています。これは非常に長い時間です。

これをいくつかのレベルで攻撃する必要があります。

  1. クエリのプロファイリングと最適化
  2. 非常に単純なクエリでテストして、接続の問題があるかどうかを確認します
于 2009-04-28T13:13:40.823 に答える