
お世話になります。
初歩的な質問かもしれませんが、よろしくお願いします。
SQL Server 2000 を使用しています。
比較的大きいサイズのデータベース「A」があります。
Dataフォルダ内のサイズは次の通りです。
・A.mdf 50MB
・A_1.mdf 4.4GB
・A_log.ldf 1.2GB
この「A」を別の用途で使用したいため、全てのテーブルのデータを削除しましたが、Dataフォルダ内のサイズがほとんど変わりません。
プロパティのデータベースの圧縮で見ると、空き容量が98%と表示されているので、無駄な領域が多いのは分かるのですが、実際に圧縮をかけても小さくなりませんでした。
方法が悪いのかもしれませんので、データベースを圧縮する手順を教えて頂ければ幸いです。
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
データベースの圧縮はデータベースファイルとトランザクションログファイルを合わせて処理するはずですので、まずトランザクションログをバックアップします。
圧縮というのはファイルの末尾から行われるものなので、いくら空き容量が大きくても末尾の方が使われていたら圧縮できません。トランザクションログのポインタは通常末尾にあります。
本当はお勧めではないですが、ログが1.2GBと大きいですし、ログの中身は不要のようですから、クエリアナライザで
BACKUP LOG (データベース) WITH TRUNCATE_ONLYを実行してもいいかと思います。ただし、ログを切り捨てるこのオプションは将来バージョンではサポートされなくなります。
実行後に圧縮を掛けてみてください。
圧縮をするときに「圧縮する前にページをファイルの先頭に移動する」にチェックを入れて実行してみてください。
余談ですが、トランザクションログについては、もし不要ならばデタッチして削除する方法もあります。
この回答への補足
回答ありがとうございます。
早速教えて頂いたクエリ実行後、圧縮してみました。
すると、
・A_1.mdf 4.4GB → 2GB
・A_log.ldf 1.2GB → 1GB
まで小さくなりましたが、まだ大きい状態です。
そこで改めてプロパティを確認したところ、
・A_1.mdfの「割り当てた領域(MB)」→2000
・A_log.ldfの「割り当てた領域(MB)」→1000
となっていました。
もしかすると、昔「A」を作成したときの設定がこうなっていたのかもしれませんが、この「割り当てた領域」を縮小することは可能でしょうか?もし方法がございましたら教えてください。
No.3
- 回答日時:
やり方としては問題ありません。
ファイルの圧縮はファイルを個別に圧縮するDBCC SHRINKFILEの機能で、こちらで圧縮することもよくあります。
No.2
- 回答日時:
圧縮をするときに「圧縮する前にページをファイルの先頭に移動する」にチェックを入れて実行したんですよね。
であれば、DBCC SHIRINKDATABASEには、NOTRUNCATEとTRUNCATE_ONLYの2種類があって、私の理解ではチェックを入れれば両方やってくれるはずだったのですが。。
念のためチェックを入れて圧縮、チェックを入れないで圧縮をそれぞれ1回ずつやってみてもらえますか(割り当てた領域も本来は小さくなるはずです)
この回答への補足
なんとか小さくすることは出来ました。
1.データベースを右クリック→「すべてのタスク」→「データベース圧縮」を選択
2.「圧縮操作」の「圧縮する前にページをファイルの先頭に移動する」にチェック
3.「OK」を押す
この手順ではじめやってましたが、No.1の回答補足のサイズが限界でした。(2のチェックを入れないバージョンも試してみましたが同じでした)
しかし、上記手順1,2の後に
3.「ファイルの圧縮」欄の「ファイル」ボタン選択
4.「圧縮操作」欄の「圧縮先のファイル」指定で、サイズを指定する。
この手順を加えたところ、4で指定したサイズ(50MB)まで小さくなりました。
手順的にいかがでしょうか^^;
本当にお手数をおかけしてしまい申し訳ありませんm(_ _)m
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
mdfファイルの残骸について
-
データベースのアタッチができ...
-
SQL-Server2000でトランザクシ...
-
復旧中のデータベースについて
-
エクセルのフィルタ抽出が固まる
-
MS-Accessのエクスポートで異常...
-
SQL Server Management Studio ...
-
SQLServer2012の復元ができない
-
【DB】同じトランザクション内...
-
期限切れのバックアップの削除
-
復元時間:復元しています
-
ADO Connection を再利用する方法
-
dbFailOnError とは?
-
accessの処理が遅い
-
一つのテーブルだけを復元(リス...
-
postgresql についてです
-
一つのトランザクションでSELEC...
-
1回目の実行に3分、2回目の実行...
-
SQLローダーで複数のCSVファイ...
-
ログ ファイルはいっぱいです。...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
mdfファイルの残骸について
-
SQLSERVERのデータファイル圧縮...
-
共有フォルダにデータを移行
-
パラメーターエラーで復元でき...
-
データベースのアタッチができ...
-
最適化について
-
データベースの圧縮について
-
tempdb の適切なサイズ
-
.sdf
-
SQL Server 2000の物理ファイル...
-
データベース復元時に指定する...
-
OpenOffice.org とMicrosoft Of...
-
ログの圧縮が出来ません。また...
-
新聞サイズの大きさのPDF化...
-
sp_attach_db実行のバッチファ...
-
アタッチができない
-
ACCESSのデータの共用ができない
-
SQLの拡張子の「mdf」の意味
-
肥大化しすぎたSQLiteがVACUUM...
-
デタッチした後
おすすめ情報