SQL Server 2005データベースから大きなバイナリ列を削除するには、結果の.mdfおよび.ldfファイルのサイズを最小限に抑えるにはどうすればよいでしょうか?SQL Server 2005で大量のデータを削除する
私たちのアプリは、ユーザーが自分の文書をアップロードできるようにするために使用されました。これらは、文書テーブルの列にBLOBとして格納されていました。時間が経つにつれ、この表はデータベース全体のサイズの90%を超えて増加しました。
私たちはこれまで以上に文書を保存したり変更したりしています。私は今この列のデータをゼロにしてデータベースを管理可能なサイズに戻したいと思っています(ディスク容量はわずかです)。従来のアプリであるため、互換性を維持してテーブルの構造を変更しないようにしたいと考えています。
最も明白な方法のような何かを行うことです。
update documents set content = 0x0
をしかし、膨大な量で.LDFを吹き飛ばすようです。特定の症状に対処
、私はその後、(backup log mydb with truncate_only
)ログを切り捨てるか、おそらくdbcc shrinkdatabase(mydb)
またはdbcc shrinkfile(mydb_log, 20)
を試みるが、私はこれらの厄介な断片化などを引き起こす可能性があり、長期的には最高ではないかもしれません聞いていたかもしれないのどちらか。
の内容がの列以外のすべてを含む2番目の表を作成し、データをコピーしてから最初にtruncate
にコピーする方がよいでしょうか?
どのような考えにも感謝します。
乾杯
他の場所が必要な場合は、ログ – jle
を切り捨てて(nullで)列を再作成してください – pkmiec