none
タイムアウトについて RRS feed

  • 質問

  • お世話になります。
    頻繁に以下のようなタイムアウトエラーになってしまうGridViewとSQLDatasourceで構成されたASP.NETのページがあり、接続文字列のタイムアウトを0にしたり、ストアドプロシージャ化してみたりして試したのですが、どうしても30秒きっかりでタイムアウトになります。開くときは5秒程度で何度でも開きます。

    Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding

    いろいろとWEBで検索するとSQLCommand.CommandTimeout がデフォルトで30秒のようなのでそれがあやしいような気がします。
    よく理解できていないので間違っているかもしれませんが、GridViewのデータソースの選択でSQLDataSource1を選ぶという手順で設定しているのでSQLCommandオブジェクトは使用していないとおもいます。その場合、CommandTimeoutを設定する方法がいまいちよくわかりません。

    どなたかアドバイスいただけないでしょうか?
    また、sp_configure 'CommandTimeout', 600 RECONFIGURE WITH override みたいな感じでデフォルトの30秒というのを変更できないのでしょうか?

    教えてください。
    よろしくお願いします。






    2009年8月13日 5:51

回答

  • Selectingイベントハンドラの引数で、例えば
    e.Command.CommandTimeout = xx;
    と設定してみて下さい。
    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://blogs.wankuma.com/trapemiya/
    • 回答としてマーク tosaito3 2009年8月14日 3:37
    2009年8月13日 8:51

すべての返信

  • クライアント側からの処理については、サーバー側(SQL Server) で、タイムアウトを設定することが出来ません。
    そのため、クライアント側からタイムアウト(コネクション(セッション) タイムアウト、コマンド タイムアウト)の設定を明示的に指定する必要がございます。

    [IIS] ADO の ConnectionTimeout と CommandTimeout について
    http://support.microsoft.com/kb/410004/ja

    2009年8月13日 6:39
  • NOBTAさま
    ご返信ありがとうございます。

    クライアントのタイムアウトなんですね。ちなみにクライアント側のCommandTimeoutの値が何になっているかはどうやって調べればよいのでしょうか?

    よろしくお願いします。
    2009年8月13日 7:19
  • お気づきのとおり、おそらく CommandTimeout の設置値によるものかと思います。

    SqlDataSourceでは SelectCommandプロパティ経由で CommandTimeoutの設定が可能です。
    SqlDataSource.SelectCommand.CommandTimeout
    
    こちらで試してみて下さい。
    Toshiya TSURU http://www.google.com/profiles/turutosiya
    2009年8月13日 8:07
  • Toshiya TSURUさま
    アドバイスありがとうございます。
    確かにWEB検索すると結構でてきますね。
    僕の環境ではSqlDataSource1.SelectCommandプロパティの中にCommandTimeoutが出てこないのですが、
     SqlDataSource1.SelectCommand.CommandTimeout = "0" のように設定できるのでしょうか?

    よろしくお願いします。

       
    2009年8月13日 8:36
  • Selectingイベントハンドラの引数で、例えば
    e.Command.CommandTimeout = xx;
    と設定してみて下さい。
    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://blogs.wankuma.com/trapemiya/
    • 回答としてマーク tosaito3 2009年8月14日 3:37
    2009年8月13日 8:51
  • trapemiyaさま
    ありがとうございます!
    早速やってみたところ確かにタイムアウトにならなくなりました!
    お盆休みにはいってユーザーがいないからか、サクサク動いているのであまり確認できなかったのですが、
    様子を見てみます。

    またよろしくお願いします。
    2009年8月14日 3:36