現在150GBのデータベースファイルがありますが、75GBしか使用されていません。これは、すべてのインデックス(他の75GB)を新しいデータファイルに移動したためです。このデータファイルからスペースの少なくとも一部を再利用したいのですが、ファイルを縮小しようとすると、ファイルは無期限に「実行」され、ネットワークの中断またはその他の制御不能な理由で最終的にキャンセルされます(ランニングの日)。 「特定のサイズに縮小」機能を使用して、10MBをトリミングするように指定しても、戻らないようです。プロセスが中断されるまでそのままです。
このスペースを少しでも取り戻すことができる別の方法はありますか?
編集:誰かが私のデータベースを縮小すべきではない理由を説明するリンクを投稿しました。わかりました。とにかく縮小したいと思います。このサーバーのディスク容量は貴重であり、データベースはこの未使用の領域に非常に長い間再び拡張されません-前に述べたように、この領域を解放するためにデータファイルからインデックスを移行したので、今では無駄になっています。
いいえ、DBCC SHRINKFILE ('filename', target_size)
を使用するのが正しい方法です。
「チャンク」で実行する場合は、ターゲットサイズを徐々に小さく設定するか、キャンセルされる前にできるだけ長く実行することができます。
いくつかのコメント:
DBCC SHRINKFILE ('filename', TRUNCATEONLY)
を実行してみてください。ファイルの最後ですでに解放されているすべてのスペースを回復する必要があります(私の前のポイントを参照)私たちの環境では、いくつかのオプションに取り組んできました。
幸運を
単にスペースを再利用したくないが(特にやりたくない)、データベースの縮小を試みることを主張する場合は、これには非常に長い時間がかかり、トランザクションログの拡張はほぼすべてのスペースをカバーするはずです。データベースから回収しました。ボーナスとして、DBのパフォーマンスが後でフロアを通過するのを見てください。 Paul Randalがあなたを納得させることができない場合(JLがコメントしたが、ここに再投稿します: データファイルを縮小しない理由 縮小はひどい考えです、誰もができるかどうかはわかりません。運の縮小は、次のリビジョンでSQLサーバーから削除されます(または、少なくともPaulが推奨するように機能するように変更されます)。