-1

テーブルを 20 分間更新するジョブがあり、これらの瞬間にテーブルの行を自然に更新できません。

これを行う方法または方法はありますか?

仕事はもっと長くなる可能性がありますが、テーブルを更新し続ける必要があります。

一方、ジョブ中にエラーが発生した場合、ジョブはロールバックする必要があります。

ありがとう..

4

2 に答える 2

0

ジョブを個別のトランザクションに分割します。SQL Server のような専門的な DBMS でロックが機能する方法は、必要に応じてより高いレベルにエスカレートすることです。クエリが多くのページにヒットすると、読み取り専用のテーブル ロックに更新されるのは当然のことです。トランザクションの整合性を維持しながらこれを回避する唯一の方法は、トランザクションを小さなジョブに分割することです。

于 2013-05-10T15:34:08.430 に答える
0

Niels が指摘したように、トランザクション内の各バッチを明示的にコミットするバッチでテーブルを更新しようとする必要があります。テーブル ロックを保証するのに十分な数のロックを作成している場合は、トランザクション ログも膨張している可能性があります。おそらくチェックして、必要に応じてより適切なサイズに縮小する価値があります。

または、「ロックの数に基づいてロックのエスカレーションを無効にする」トレース フラグ 1224 または 1211 を有効にしてみてください - http://msdn.microsoft.com/en-us/library/ms188396.aspx

于 2013-05-10T15:41:17.057 に答える