- - PR -
基になる接続エラー
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-07-30 21:39
はじめまして、だんご虫と申します。
.NET暦・SQLSERVER暦ともに半年と短く、 今回発生したエラーにどのように対応をしたらよいかわからず、 皆様のお知恵をお借りしたいと思い投稿させて頂きました。 エラー状況 スマートクライアントによるWINDOWSシステムのアプリケーションにて、 クライアントから集計処理(データ数は多くても10万件未満)を実行し、 サーバ側で処理が行われるのですが、 サーバ側でのSQLによる集計処理中に、5分程度経過した際に、 「基になる接続エラー」が発生してしまう状況です。 別の処理が小さな集計(データ数が少ない)ではエラーは発生しません。 また、ローカル環境ではエラーは発生せず、 WEB経由の場合にエラーが発生しています。 プロクシは使用していないので、コード内で設定するとかはしていません。 恥ずかしながら、エラー原因の特定ができずどのような対処をしたらよいか、 まったくわかっておりません。。。 解決方法や対処法やエラー原因の特定法などなにかございましたら。 ご教授宜しくお願いします。 構成 WINDOWS XP VB.NET ASP.NET IIS6.0 SQLSERVER2000 スマートクライアント | ||||||||
|
投稿日時: 2006-07-31 08:39
単純にタイムアウトを起こしているだけのような気が・・・
集計処理はストプロで作成されているのでしょうか? その際のストプロの実行には、SqlCommandを使用してます? そうであれば、CommandTimeoutプロパティの値を調べてみると 良いと思います。 ※デフォルト値は30秒ですが、5分経過してエラーになったという事は 300秒をセットしているのかも? | ||||||||
|
投稿日時: 2006-07-31 10:07
梶様、回答ありがとうございます。
CommandTimeoutの設定値は600秒となっており、 これが原因ではないと思います。 Machine.configやIISのキープアライブの設定が疑わしいのでは? (全然見当違いな事を言っていたら申し訳ありません) と思うのですが、どのような設定を行えばいいのか解っておりません・・・ | ||||||||
|
投稿日時: 2006-07-31 11:36
はじめまして。
クライアント側のタイムアウト設定はどうでしょうか? | ||||||||
|
投稿日時: 2006-07-31 11:53
タイムアウトっぽいですね。
集計する項目をインデックスにすると、少し早くなりますよ。 | ||||||||
|
投稿日時: 2006-07-31 13:51
teto様
田中様 回答ありがとうございます。 >クライアント側のタイムアウト設定 とはIISのタイムアウト設定のことでしょうか? IISのタイムアウト設定は、1800秒となっています。 >集計する項目をインデックスにする 現在は一時テーブルに集計結果をガンガン突っ込んでいます(INSERT) 一時テーブルにインデックスを張れば、早くなるという事でしょうか? | ||||||||
|
投稿日時: 2006-07-31 14:28
IISは、普通、サーバですね。
インデックスを作るのにコストがかかるから却って遅くなりますね。 (集計元のテーブルにインデックス作っておけば早くなるのでは?という事なのでは?) | ||||||||
|
投稿日時: 2006-07-31 14:37
一時テーブルだったんですね・・・^^;
しかし、10万件未満の処理で5分はちょっと長い気がしますね・・・ 冬寂さんの仰るとおり、一時テーブルでは、その都度インデックスを書き換える処理が追加されてしまうと思われるため、一時テーブルに吐き出す側のテーブルのインデックスや、クエリーの作り方などを再検討してみては如何でしょうか? |