- - PR -
原因を教えてください
1
| 投稿者 | 投稿内容 |
|---|---|
|
投稿日時: 2006-07-01 17:59
SQL Server2000でストアドプロシージャを作っています。
大量のデータをUPDATEするプロシージャです。 ロジックは以下のようになっています。 (1) トランザクション開始。 (2) UPDATEしたいデータが入っているテーブルからデータをSELECT。 (3) UPDATE対象のテーブルをWITH XLOCKでSELECT。 (4) UPDATE対象のテーブルをUPDATE。 (5) UPDATEの履歴を取るため、履歴用のテーブルにレコードを追加。 (6) コミット。 (3)〜(5)をデータ件数分繰り返しています。 このストアドプロシージャを使って、2000件程度のデータの更新をしようとしたところ、 「ネットワークの一般エラーです。ネットワークのドキュメントを確認してください。」のエラーになりました。 (3)と(5)をやめたら出なくなったのですが、本当の原因は何なのかがいまいちわかりません。 (5)の処理は必要なので、削除するわけにはいきません。 (3)についても、排他をかけたい(後で実行した方がエラーになるようにしたい)ので残したいです。 1件ずつコミットすればいいかもしれないと思っているのですが、ループの途中で何らかのエラーが起こったときには、UPDATE全体をロールバックしたいので、コミットのタイミングを変えることは出来ません。 どなたか良い対策を教えてください。 |
|
投稿日時: 2006-07-02 01:24
お疲れ様です。
TimberLandChapel です。 当該のエラーが発生する際に, サーバーの物理マシンの再起動が発生していませんか? ・2000 SP3a ・統計情報の破損したデータテーブル に複数の JOIN をかける負荷の高いクエリを発行した場合に, 同様のエラーで不具合(この場合サーバーの再起動と言う致命的な)が発生した経験があります。 ・2000 SP4 にあげる ・データをフラットファイルにフルダンプして,新しくきれいなデータベースとしてロードしなおす という対応で再現しなくなったことがあります。 直接の解決策にならないかもしれませんが, もし試せるようでしたら,試してみてください。 ---------- TimberLandChapel http://blogs.timberlandchapel.com/blogs/timberlandchapel/ |
1
