2017-02-14 6 views
3

ログ配布に慣れていないので、7100万レコードを含むテーブルから7000万レコードを削除する必要があります。ログ配布を使用している間にレコードの数百万を削除する - SQL Server

私の問題は、私は次の操作を行う場合はログ配布どう反応するかである。

  1. コピー私は維持したい万のレコード、新しいテーブルに
  2. 元のテーブルを切り捨てる(トランケート表OriginalTable)
  3. 元の表の挿入、レコード

の百万我々は、ログのためのスペースが限られています。記録され、出荷されるものは何ですか?

おかげ

+0

私はあなたがプライマリデータベースから削除する必要があると仮定します。ログの出荷には変更が反映されます –

+0

新しいテーブルを作成し、Shipping_NEWという名前をつけて、生産テーブルから直接保存したいレコードを挿入することもできます。次に、古いテーブルの名前をShipping_BAK ...に変更します。Shipping_NEWの名前をShippingに変更します(プロダクションテーブルにする)。これにより、2つの挿入をログ・スペースから省くことができます。あなたが私に尋ねるならば名義ですが、あなたが心配しているように思えばそれは別の選択肢です。その後、古いテーブルを落としたり、保管したりすることができます。 – scsimon

答えて

3

は、これは問題ないはずです - 限り、あなたはログを切り捨てて、ちょうどテーブルを切り捨てるていないとして、出荷が追いつかなければならないログ。

切り詰めが記録され、効率的にログに記録されます(https://dba.stackexchange.com/questions/55834/what-does-a-truncate-table-write-to-the-log-file-in-sql-server/55882参照)。 100万個のインサートのロギングが得られますが、これはおそらく効率的なものです。

+0

お返事ありがとうございます、私は自分の手続きを進めることに自信がありました。私はすべてうまくいって、ログファイルはわずか200万バイトで、100万レコード近くの切り詰めと挿入が行われました。 – freddoo