- ベストアンサー
データベースの圧縮について
- データベースの圧縮方法を教えてください
- SQL Server 2000で大きいデータベースを圧縮する方法を知りたい
- データベースの無駄な領域を圧縮する手順を教えてください
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
データベースの圧縮はデータベースファイルとトランザクションログファイルを合わせて処理するはずですので、まずトランザクションログをバックアップします。 圧縮というのはファイルの末尾から行われるものなので、いくら空き容量が大きくても末尾の方が使われていたら圧縮できません。トランザクションログのポインタは通常末尾にあります。 本当はお勧めではないですが、ログが1.2GBと大きいですし、ログの中身は不要のようですから、クエリアナライザで BACKUP LOG (データベース) WITH TRUNCATE_ONLYを実行してもいいかと思います。ただし、ログを切り捨てるこのオプションは将来バージョンではサポートされなくなります。 実行後に圧縮を掛けてみてください。 圧縮をするときに「圧縮する前にページをファイルの先頭に移動する」にチェックを入れて実行してみてください。 余談ですが、トランザクションログについては、もし不要ならばデタッチして削除する方法もあります。
その他の回答 (2)
- jamshid6
- ベストアンサー率88% (591/669)
やり方としては問題ありません。 ファイルの圧縮はファイルを個別に圧縮するDBCC SHRINKFILEの機能で、こちらで圧縮することもよくあります。
お礼
何度も回答を頂き、大変感謝いたします。 今回は大変勉強させて頂きました。 本当にありがとうございました。
- jamshid6
- ベストアンサー率88% (591/669)
圧縮をするときに「圧縮する前にページをファイルの先頭に移動する」にチェックを入れて実行したんですよね。 であれば、DBCC SHIRINKDATABASEには、NOTRUNCATEとTRUNCATE_ONLYの2種類があって、私の理解ではチェックを入れれば両方やってくれるはずだったのですが。。 念のためチェックを入れて圧縮、チェックを入れないで圧縮をそれぞれ1回ずつやってみてもらえますか(割り当てた領域も本来は小さくなるはずです)
補足
なんとか小さくすることは出来ました。 1.データベースを右クリック→「すべてのタスク」→「データベース圧縮」を選択 2.「圧縮操作」の「圧縮する前にページをファイルの先頭に移動する」にチェック 3.「OK」を押す この手順ではじめやってましたが、No.1の回答補足のサイズが限界でした。(2のチェックを入れないバージョンも試してみましたが同じでした) しかし、上記手順1,2の後に 3.「ファイルの圧縮」欄の「ファイル」ボタン選択 4.「圧縮操作」欄の「圧縮先のファイル」指定で、サイズを指定する。 この手順を加えたところ、4で指定したサイズ(50MB)まで小さくなりました。 手順的にいかがでしょうか^^; 本当にお手数をおかけしてしまい申し訳ありませんm(_ _)m
補足
回答ありがとうございます。 早速教えて頂いたクエリ実行後、圧縮してみました。 すると、 ・A_1.mdf 4.4GB → 2GB ・A_log.ldf 1.2GB → 1GB まで小さくなりましたが、まだ大きい状態です。 そこで改めてプロパティを確認したところ、 ・A_1.mdfの「割り当てた領域(MB)」→2000 ・A_log.ldfの「割り当てた領域(MB)」→1000 となっていました。 もしかすると、昔「A」を作成したときの設定がこうなっていたのかもしれませんが、この「割り当てた領域」を縮小することは可能でしょうか?もし方法がございましたら教えてください。