sqlserverでの更新で時間切れのメッセージが表示されます。

解決


佐々木  2010-04-21 17:27:40  No: 38326  IP: 192.*.*.*

Delphi2010+SqlServer2005で開発してます。

更新する際、
100件くらいなら問題ないのですが、
1000件ぐらいになると、
更新するときに
 
例外クラス EOleException 
(メッセージ 'クエリ タイムアウトが時間切れになりました')を送出しました。

というメッセージが表示されます。

いろいろ調べた結果、AdoConnectionのCommandTimeout、ConnectionTimeoutの値を変えると解決しそうだったので、
値を0にしてやってみたのですが、未だ解決できません。

クエリは
BEGIN TRAN
update 〜
update 〜
update 〜
×件数
COMMIT
という具合で発行してます。 

どうかご教授お願いします。

編集 削除
DEKO  2010-04-21 19:38:23  No: 38327  IP: 192.*.*.*

こんにちは。

1.タイムアウトしないように、テーブルに最適なインデックスを付与する。
  (Update の Where 句を参考にして)

2.TADOConnection.CommandTimeout ではなく、
  TADOQuery.CommandTimeout を設定する (0 ではなく時間を)。

この 2 点を試してみてはいかがでしょうか?

編集 削除
佐々木  2010-04-22 18:33:55  No: 38328  IP: 192.*.*.*

インデックスの追加で現象が起こらなくなりました。
DEKOさん、ありがとうございました。

編集 削除