当面の問題は、このテーブルを使用する他のプロセスでデッドロックを引き起こすことなく、テーブルから約 60M のレコードを削除する必要があることです。この時点で、一度に約 1M のレコードしか処理しない while ループを使用してレコードを削除する作業がほぼ完了しましたが、それには 1 日かかります。
Q1: テーブルをオンラインに保ち、MS SQL Server 2005 でこのテーブルを使用する必要がある他のリソースへの影響を最小限に抑えながら、テーブルから大量のデータを削除する最適な方法は何ですか?
Q2: Oracle のように、SQL Server で個別の行ロック (テーブル ロックではなく) を実装する方法はありますか? (これに答えるとQ1に答えるかもしれないことに注意してください)。
A2: @Remus Rusanu が教えてくれたように、削除で行レベルのロックを行う方法があります。