MSDE FunClub 現在までのアクセスカウント数 最終更新日 : 2001/12/20
Microsoft Data Engine FunClub
Since 2001.12.20

シングルファイルデータベース
トランザクションログファイルの圧縮
【強引な方法】
お勧めできません!
*技術書の文責は堀川にありますので、お問い合わせはまでお願いします*
この文書に基づいた運用結果に責任は負いません
マイクロソフト社へのお問い合わせはできません

 

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)
データファイルプロパティの表示
[画面1-1]作成されたデータベースのデータファイルプロパティ

データファイルのプロパティを、Enterprise Managerで表示

 

3.作成されたデータベースのプロパティ画面(2)
トランザクションログファイルプロパティの表示
[画面1-2]作成されたデータベースのログファイルのプロパティ

ログファイルのプロパティを、Enterprise Managerで表示
ログファイルの初期サイズの大きさは、10MBになっています。このログファイルの大きさを小さくするのがこの技術文書の目的です。
 

4.データベースの完全バックアップを実行

  Backup Database MyTestDB
   To Disk = 'C:\Test\MyTestDB-Backup.bak'

作業を始める前に、念のためデータベースの完全バックアップを実行しましょう。
 

5.データベースの切り離しを実施(デタッチ)

  exec sp_detach_db MyTestDB

ここで解説するログファイルの圧縮方法は、ちょっと強引な方法です。
厳密にはログファイルの圧縮ではなく、ログファイルの新規作成となります。
データベースを、データベースサーバーの管理下から切り離します(デタッチ)。
 

6.ログファイルの名前の変更、または削除
 
[画面1-3]ログファイルの名前を変更する

C:\TEST\MyTestDB.ldf ログファイルを、エクスプローラーなどによって削除してください。
名前の変更を行なっても構いません。
ここでは、ログファイルに.old拡張子を付けて、名前を変更しました。
 

7.データベースの組み込みを実施(アタッチ)

  exec sp_attach_single_file_db  MyTestDB , 'C:\Test\MyTestDB.mdf'

データベースを再びデータベースサーバーに組み込みます(認識をさせます)。
アタッチの実行を行ないます。
ストアドプロシージャ sp_attach_single_file_db を使います。
ファイル名には、.mdfファイル名を指定します。
トランザクションログファイルが存在しないため、自動的に作成されます。この作成されたファイルが小さいサイズになっています。結果的には、トランザクションログファイルの圧縮に成功(?)したことになります。
 

8.新しく作成されたトランザクションログファイル
 
[画面1-4]新しく作成されたトランザクションログファイル

アタッチによって自動的に作成されたトランザクションログファイルは、小さくなっていることに気が付きます。
 

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などでは、データベースが『ログの切り捨て』モードになっているのを変更します。
 

 

Homeに戻る


(株)日本技術ソフト開発 責任編集:堀川 明
MSDE FunClubに関するご意見・ご要望等ございましたら、 msdefun@horikawa.ne.jp までご連絡下さい。

MSDE FunClubの運営は、マイクロソフト社とは一切の関係はありません