次の方法で共有


レポート データベースの構築または更新

このトピックでは、スケーラブルな共有データベースとして使用することを目的としたレポート データベースの構築または更新方法について説明します。レポート データベースは、この図のように実稼働データベースのコピーである場合もあれば、1 つ以上の実稼働データベースからインポートしたレポート データを含んでいる場合もあります。レポート データベースを構築または更新する処理は、新しいレポート データベースを構築するか、古いレポート データベースを更新するかに応じて、構築フェーズまたは更新フェーズと呼ばれます。

スケーラブルな共有データベースは、レポート ボリュームのセット上に新しいレポート データベースを構築することから始まります。時間の経過に伴いレポート データが古くなって役に立たなくなると、そのレポート データベースは古いレポート データベースと呼ばれます。古いレポート データベースは、各更新サイクルの中で更新されます。古いレポート データベースを更新するには、データを更新するか完全に新しいバージョンのデータベースを構築するかのどちらかになります。

レポート データベースを構築または更新するには、SQL Server でデータやデータベースをコピーするために提供されている、いずれかのデータ コピー方法を使用します。詳細については、このトピックの「レポート データベースの構築または更新方法」を参照してください。

レポート データベースの構築または更新方法

注意

レポート データベースを構築または更新する前に、レポート ボリュームのセットを実稼働サーバーにマウントし、各ボリュームを読み書き可能としてマークする必要があります。この処理のすべての手順の説明については、このトピックの「構築フェーズまたは更新フェーズの手順」を参照してください。

SQL Server 2005 以降のバージョンでは、レポート データベースを構築または更新するための以下の方法がサポートされています。

  • SQL Server Integration Services (SSIS)

    SSIS パッケージを実行し、SQL 実行タスクまたはデータベース転送タスクを使用することによって、データベースを作成またはコピーできます。

    • SQL 実行タスクは、パッケージ内の SQL ステートメントやストアド プロシージャを実行します。SQL 実行タスクを使用すると、CREATE DATABASE ステートメントを実行してデータベースを作成し、1 つ以上のテーブルやビューをコピーすることでデータベースにデータを設定することができます。詳細については、「SSIS SQL 実行タスク」を参照してください。

    • データベース転送タスクでは、同じサーバー インスタンスまたは異なるインスタンス間でデータベースをコピーすることができます。詳細については、「データベース転送タスク」を参照してください。

    注意

    また、SQL Server インポートおよびエクスポート ウィザードを使用してデータベースを作成することもできますが、少なくとも 1 つのテーブルまたはビューをコピーする必要があります。詳細については、「SQL Server インポートおよびエクスポート ウィザードを使用したデータの移動」を参照してください。

  • バックアップと復元

    レポート ボリューム上に実稼働データベースのバックアップを復元することができます。そのためには、レポート ボリューム上でデータベースの完全バックアップを復元して復旧します。

    • 同じドライブ文字を使用する場合は、レポート ボリュームを異なるホストにマウントし、そのサーバー インスタンスに接続して、データベースを復元します。

    • レポート ボリュームと実稼働ボリュームとで異なるドライブ文字を使用する場合は、RESTORE DATABASE ステートメントに WITH MOVE 句を追加して、復元されるデータベースのパス名の中にレポート ボリュームのドライブ文字を指定する必要があります。

    バックアップと復元によるデータベースのコピーの詳細については、「バックアップと復元によるデータベースのコピー」を参照してください。

  • 実稼働データベースのコピー

    データベースを手動でコピーするか、データベース コピー ウィザードのデタッチ後にアタッチする方式を使用する場合は、そのデータベースをオフラインにして、コピー後にオンラインに戻す必要があります。ただし、データベース コピー ウィザードでは、オンラインにしたままでデータベースをコピーする SMO 転送方式も提供されています。SMO 転送方式は、デタッチ後にアタッチする方式よりも低速ですが、データベースに対するアクティブな接続を保持できるという利点があります。

    詳細については、「データベース コピー ウィザードの使用」を参照してください。

注意

レポート データベースを構築する際には、実稼働データベースとレポート データベースで常に同じパス名を使用し、可能であれば、実稼働ボリュームとレポート ボリュームで (レポート サーバーにマウントする際に) 同じドライブ文字を使用することをお勧めします。

レポートデータベースを、予想されるクエリ ワークロードに対して最適化すると効果的です。最適化としては以下の方法が考えられます。

  • 必要に応じて、影響のあるテーブルとインデックスに対する統計情報を更新または再作成する。

  • FILL FACTOR を 100 にしてインデックスを再構築する。

  • レポート データベースを単純復旧モードにし、チェックポイントを実行して、トランザクション ログを切り捨ててログ領域を節約する。

注意

レポート データベースをスケーラブルな共有データベースとして使用する方法のガイドラインについては、「スケーラブルな共有データベースのための適切な環境の確保」を参照してください。

データベースの準備ができたら、レポート ボリュームを読み取り専用としてマークし、実稼働サーバーからマウント解除する必要があります。詳細については、このトピックの「構築フェーズまたは更新フェーズの手順」を参照してください。

構築フェーズまたは更新フェーズの手順

注意

レポート データベースを更新する前に、すべてのレポート サーバーからレポート ボリュームのセットをマウント解除する必要があります。詳細については、「スケーラブルな共有データベースのデタッチ」を参照してください。

レポート データベースを構築または更新するには、実稼働サーバー上で以下の手順を実行します。

  1. ハードウェア ベンダのユーティリティを使用し、各レポート ボリュームに対応する論理ユニット番号 (LUN) のマスクを解除し、実稼働サーバーからボリュームにアクセスできるようにします。データベースが複数のレポート ボリュームを使用する場合は、ボリュームごとにこの手順を実行します。

  2. 各レポート ボリュームをマウントして、読み書き可能としてマークします。DiskPart の list volumes コマンドを使用すると、コンピュータ上のすべてのディスクとボリュームが表示されるため、ボリューム情報を得るのに便利です。DiskPart ユーティリティを使用してボリュームをマウントするには、コマンド プロンプトで次のコマンドを入力します。

    DiskPart

    DISKPART> select volume=<drive-number>

    DISKPART> assign letter=<drive-letter>

    DISKPART> attribute clear readonly

    DISKPART> exit

    <drive-number> は、Windows オペレーティング システムによって割り当てられたボリューム番号で、<drive-letter> は、レポート ボリュームに割り当てられたドライブ文字です。データベースが複数のレポート ボリュームを使用する場合は、ボリュームごとにこの手順を実行します。

  3. 既存のレポート データベースを更新する場合は、以下を実行します。

    • データベースをサーバー インスタンス (通常は実稼働サーバーのインスタンス) にアタッチします。

      詳細については、「CREATE DATABASE (Transact-SQL)」または「データベースをアタッチする方法 (SQL Server Management Studio)」を参照してください。

    • データベースを読み書きアクセス可能にします。

      そのためには、次の Transact-SQL ステートメントを使用します。

      ALTER DATABASE <database_name> SET READ_WRITE
      
      ALTER DATABASE <database_name> SET READ_WRITE
      
  4. データベースを構築または更新します。

    管理者は、レポート データベースを構築または更新するいずれかのメソッドを使用して、データベースを構築または更新します。レポート データベースでは任意の有効なデータベース名を使用できます。詳細については、このトピックの「レポート データベースの構築または更新方法」を参照してください。

    注意

    レポート データベースでは、PAGE_VERIFY を既定値の CHECKSUM に設定することをお勧めします。詳細については、「ALTER DATABASE (Transact-SQL)」を参照してください。

  5. 実稼働サーバー インスタンスからデータベースをデタッチします。

    そのためには、次の Transact-SQL ステートメントを使用します。

    sp_detach_db @dbname='<database_name>'
    
    sp_detach_db @dbname='<database_name>'
    

    <database_name> はデータベースの名前です。

    注意

    既定では、sp_detach_db によって UPDATE STATISTICS が実行され、統計情報のサンプルが再取得されます。しかし、実装によっては、FULL SCAN オプション付きで別途 UPDATE STATISTICS を実行する必要があります。

  6. 各レポート ボリュームを読み取り専用としてマークし、実稼働サーバーからマウント解除します。

    DiskPart ユーティリティを使用してボリュームをマウント解除するには、コマンド プロンプトで次のコマンドを入力します。

    DiskPart

    DISKPART> select volume=<drive-number>

    DISKPART> attribute set readonly

    DISKPART> remove

    <drive-number> は、Windows オペレーティング システムによって割り当てられたボリューム番号で、<drive-letter> は、レポート ボリュームに割り当てられたドライブ文字です。データベースが複数のレポート ボリュームを使用する場合は、ボリュームごとにこの手順を実行します。

    重要な注意事項重要

    レポート ボリュームは、実稼働サーバーからマウント解除する前に読み取り専用にしておく必要があります。

これでレポート データベースはスケーラブルな共有データベースとして使用可能になりました。詳細については、「レポート データベースをスケーラブルな共有データベースとしてアタッチする」を参照してください。