MSDE FunClub | 最終更新日 : 2001/12/20 | |
Microsoft Data Engine FunClub |
|
トランザクションログファイルの圧縮 【強引な方法】 お勧めできません! |
この文書に基づいた運用結果に責任は負いません マイクロソフト社へのお問い合わせはできません |
1.データベースの定義 【シングルファイルデータベースを作成するSQL文】 |
CREATE DATABASE MyTestDB ON PRIMARY -- データファイル ( NAME = MyTestDB_DAT , -- 論理ファイル名 FILENAME = 'C:\TEST\MyTestDB.mdf', -- 物理ファイル名 SIZE = 10MB , -- 初期サイズ FILEGROWTH = 10% , -- 自動拡張単位 MAXSIZE = UNLIMITED -- ファイル最大サイズ(無制限) ) LOG ON -- トランザクションログファイル ( NAME = MyTestDB_LOG , -- 論理ファイル名 FILENAME = 'C:\TEST\MyTestDB.ldf', -- 物理ファイル名 SIZE = 10MB , -- 初期サイズ FILEGROWTH = 10% , -- 自動拡張単位 MAXSIZE = 1000MB -- ファイル最大サイズ ) |
シングルファイルデータベースとは、データファイルが1個、トランザクションログファイルが1個から構成されるデータベースのことです。一番シンプルなデータベースです。
|
2.作成されたデータベースのプロパティ画面(1) データファイルプロパティの表示 |
|
データファイルのプロパティを、Enterprise Managerで表示
|
3.作成されたデータベースのプロパティ画面(2) トランザクションログファイルプロパティの表示 |
|
ログファイルのプロパティを、Enterprise Managerで表示 ログファイルの初期サイズの大きさは、10MBになっています。このログファイルの大きさを小さくするのがこの技術文書の目的です。 |
4.データベースの完全バックアップを実行 |
Backup Database MyTestDB To Disk = 'C:\Test\MyTestDB-Backup.bak' |
作業を始める前に、念のためデータベースの完全バックアップを実行しましょう。 |
5.データベースの切り離しを実施(デタッチ) |
exec sp_detach_db MyTestDB |
ここで解説するログファイルの圧縮方法は、ちょっと強引な方法です。 厳密にはログファイルの圧縮ではなく、ログファイルの新規作成となります。 データベースを、データベースサーバーの管理下から切り離します(デタッチ)。 |
6.ログファイルの名前の変更、または削除 |
|
C:\TEST\MyTestDB.ldf ログファイルを、エクスプローラーなどによって削除してください。 名前の変更を行なっても構いません。 ここでは、ログファイルに.old拡張子を付けて、名前を変更しました。 |
7.データベースの組み込みを実施(アタッチ) |
exec sp_attach_single_file_db MyTestDB , 'C:\Test\MyTestDB.mdf' |
データベースを再びデータベースサーバーに組み込みます(認識をさせます)。 アタッチの実行を行ないます。 ストアドプロシージャ sp_attach_single_file_db を使います。 ファイル名には、.mdfファイル名を指定します。 トランザクションログファイルが存在しないため、自動的に作成されます。この作成されたファイルが小さいサイズになっています。結果的には、トランザクションログファイルの圧縮に成功(?)したことになります。 |
8.新しく作成されたトランザクションログファイル |
|
アタッチによって自動的に作成されたトランザクションログファイルは、小さくなっていることに気が付きます。 |
9.データベースオプションの確認(MSDE/MSDE2000) |
[MSDEの場合] exec sp_dboption 'MyTestDB' , 'select into/bulkcopy' , 'FALSE' exec sp_dboption 'MyTestDB' , 'trunc. log on chkpt.' , 'FALSE' [MSDE2000の場合] alter database MyTestDB set recovery bulk_logged |
データベースのトランザクションログファイル機能が有効に働くように設定をします。 MSDEまたはMSDE2000などでは、データベースが『ログの切り捨て』モードになっているのを変更します。 |