SQL Server 2005 Enterprise Edition で使用できる データベーススナップショットを使用してみます。データベース スナップショットは、スナップショット作成元のデータベースの読み取り専用の静的ビューです。スナップショット作成時に点のデータベースとなります。

データベーススナップショットの一般的な利用方法についてはBooks Online や 次のリンクを参照してください。

データベース スナップショットの一般的な使用方法
http://msdn.microsoft.com/ja-jp/library/ms175472.aspx

T-SQL の動作確認は SQL Server 2005 Developer Edition の Management Studio 上で実施しています。

1. スナップショットを使用する

スナップショットを作成、削除するサンプルを掲載します。スナップショットの作成には CREATE DATABASE  ステートメントに AS SNAPSHOT OF ソースデーベース名 ステートメントを使用します。削除する場合は通常のDBと同じようにDROP DATABASE データベーススナップショット名 ステートメントを使用します。

-- データベースのスナップショットを作成する
USE master

-- NAME はソースデータベースのデータファイル論理名
CREATE DATABASE ComponentSnap
   ON ( 
        NAME = Component
       ,FILENAME = N'C:\work\CompSnapData.mdf'
      )
   AS SNAPSHOT OF Component

-- データベーススナップショットを削除する
DROP DATABASE ComponentSnap

スナップショットから作成元となったソースデータベースをリストアすることもできます。研修用のデータベースを復元するようにスナップショットを使用する場合などに便利です。ただし、スナップショットが作成時点のデータが復元されることに注意してください。スナップショットを使用するリストアは、バックアップおよび復元の変わりに使用することはできません。

-- データベーススナップショットから
-- ソースとなったデータベースを復元
-- することができます。ただし、スナップショット
-- が作成されてからの変更は失われます。
RESTORE DATABASE Component
  FROM DATABASE_SNAPSHOT = 'ComponentSnap'

2. まとめ

今回の説明は以上です。スナップショットを使用するとソースデータベースに負荷を与えずにリポートを作成するような読み取りようのビューを提供できます。

誤りや指摘点などがあればご指摘ください。