2017-05-03 9 views
0

Microsoftのドキュメントhereによれば、言うことは、次のコマンドを呼び出す場合SQL Serverでは、DBCC SHRINKDATABASEに 'NOTRUNCATE'パラメータを使用する理由は何ですか?

DBCC SHRINKDATABASE(N'MyDb', NOTRUNCATE) 

NOTRUNCATEパラメーターが渡されるため、解放されたスペースは、OSに返却されませんので、データベースだった現れることこと縮小/修正されていません。さらに、物理ファイルサイズが変更されないことを文書に記載しています。なぜあなたは今まで

DBCC SHRINKDATABASE(N'MyDb', 20) --20 is the percentage of free space that you want left in the database file after the database has been shrunk 

または

DBCC SHRINKDATABASE(N'MyDb') 

メモリを解放するために、データベースを縮小するの全体のポイントはありませんが、何をしますか?私はここで何が欠けていますか?

+0

私はあなたが提供したリンクを読んでいると思っています。それはあなたのディスクドライブ上でデフラグをするようなものです(はい、私は昔です)。割り当てられたページをファイルの先頭に移動して、割り当てられていないスペースに移動しますが、スペースは同じにして縮めません。 –

+0

これは明らかですが、ページが主要な順序から外れてしまうと、インデックスの断片化が発生する可能性が高くなります。 –

答えて

1

私は返事を書くようになりましたが、自分の議論は意味をなさないと確信しました。私は別のアイデアを得て、それを書いて始め、再びそれから自分自身を語りました。それは3回目でしたが、もう一度合理化することができませんでしたNOTRUNCATE

ファイルスペースをあきらめない唯一のメリットは、すぐに戻ってくることがわかっている場合です。その場合は、なぜSHRINKDATABASEに気をつけますか?データベースファイルを縮小せずにテーブルをデフラグするためにインデックスを再構築することに固執してください(悪名高いことに、テーブルを再分割する可能性があります)。縮小するよりも良い結果が得られます。

だから、あなたはなぜこのことをやったのか分かりません。

関連する問題