SQL Server エージェントで SSAS 管理タスクのスケジュール設定を行う

SQL Server エージェント サービスを使用すると、Analysis Services の管理タスクのスケジュールを設定して、必要なときに必要な順序で実行できます。定期タスクは、一定の周期または指定した周期で実行されるプロセスを自動化するのに役立ちます。 キューブ処理などの管理タスクは、ビジネス活動が盛んでない時間帯に実行されるようにスケジュールできます。 また、SQL Server エージェント ジョブでジョブ ステップを作成することにより、タスクの実行順序を指定できます。 たとえば、キューブを処理した後でバックアップを実行できます。

ジョブ ステップを使用すると、実行フローを制御できます。 あるジョブが失敗した場合に、残りのタスクを引き続き実行するか、実行を停止するように、SQL Server エージェントを構成できます。 また SQL Server エージェントを、ジョブ実行の成否についての通知を送信するように構成することもできます。

このトピックでは、SQL Server エージェントを使用して XMLA スクリプトを実行する方法を 2 つ紹介します。 最初の例では、単一のディメンションの処理をスケジュール設定する方法を示します。 2 番目の例では、スケジュールに従って実行される単一のスクリプトに複数の処理タスクを組み合わせる方法を示します。 このチュートリアルを完了するには、次の条件を満たす必要があります。

必要条件

SQL Server エージェント サービスがインストールされている必要があります。

既定では、ジョブはサービス アカウントで実行されます。 SQL Server 2012 では、SQL Server エージェントの既定のアカウントは NT Service\SQLAgent$<instancename> です。 バックアップまたは処理タスクを実行するには、このアカウントが Analysis Services インスタンスのシステム管理者である必要があります。 詳細については、「サーバーの管理権限の許可 (Analysis Services)」を参照してください。

操作対象のテスト データベースも必要です。 AdventureWorks 多次元サンプル データベースまたはプロジェクトを Analysis Services 多次元チュートリアルから配置して、このチュートリアルで使用できます。 詳細については、「Analysis Services 多次元モデリング チュートリアル用のサンプル データおよびプロジェクトのインストール」を参照してください。

例 1: 定期タスクでのディメンションの処理

この例では、ディメンションを処理するジョブを作成し、スケジュール設定を行う方法を示します。

Analysis Services の定期タスクは、SQL Server エージェント ジョブに組み込まれる XMLA スクリプトです。 このジョブは、指定した時刻と頻度で実行されるようにスケジュールされます。 SQL Server エージェントは SQL Server の一部なので、管理タスクの作成およびスケジュール設定には、データベース エンジンおよび Analysis Services を使用します。

SQL Server エージェント ジョブでディメンションを処理するスクリプトを作成する

  1. SQL Server Management Studio で、Analysis Services に接続します。 データベース フォルダーを開き、ディメンションを検索します。 ディメンションを右クリックし、[処理] をクリックします。

  2. [ディメンションの処理] ダイアログ ボックスにある [オブジェクト一覧][処理オプション] 列で、この列のオプションが [完全処理] であることを確認します。 別のオプションが設定されている場合、[処理オプション] 列のオプションをクリックし、表示される一覧から [完全処理] を選択します。

  3. [スクリプト] をクリックします。

    この手順により、ディメンションを処理する XMLA スクリプトを含む XML クエリ ウィンドウが表示されます。

  4. [ディメンションの処理] ダイアログ ボックスで、[キャンセル] をクリックしてダイアログ ボックスを閉じます。

  5. XMLA クエリ ウィンドウで、強調表示された XMLA スクリプトを右クリックし、[コピー] をクリックします。

    この手順により、XMLA スクリプトが Windows クリップボードにコピーされます。 XMLA スクリプトをクリップボードに残しておくか、メモ帳または別のテキスト エディターに貼り付けます。 XMLA スクリプトの例を次に示します。

    <Batch xmlns="https://schemas.microsoft.com/analysisservices/2003/engine">
     <Parallel>
      <Process xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
        <Object>
          <DatabaseID>Adventure Works DW Multidimensional</DatabaseID>
          <DimensionID>Dim Account</DimensionID>
        </Object>
        <Type>ProcessFull</Type>
        <WriteBackTableCreation>UseExisting</WriteBackTableCreation>
      </Process>
     </Parallel>
    </Batch>
    

ディメンション処理ジョブを作成してスケジュールを設定する

  1. データベース エンジンのインスタンスに接続し、オブジェクト エクスプローラーを開きます。

  2. [SQL Server エージェント] を展開します。

  3. [ジョブ] を右クリックし、[新しいジョブ] をクリックします。

  4. [新しいジョブ] ダイアログ ボックスで、[名前] ボックスにジョブ名を入力します。

  5. [ページの選択] で、[ステップ] を選択し、[新規作成] をクリックします。

  6. [新しいジョブ ステップ] ダイアログ ボックスで、[ステップ名] にステップ名を入力します。

  7. [サーバー] で、Analysis Services の既定のインスタンスの localhost と、名前付きインスタンスの localhost\ <instance name> を入力します。

    リモート コンピューターからジョブを実行する場合は、ジョブが実行されるサーバー名およびインスタンス名を使用します。 既定のインスタンスには <server name>、名前付きインスタンスには <server name>\<instance name> の形式をそれぞれ使用します。

  8. [種類] で、[SQL Server Analysis Services コマンド] を選択します。

  9. [コマンド] で、右クリックして [貼り付け] を選択します。 前の手順で生成した XMLA スクリプトがコマンド ウィンドウに表示されます。

  10. [OK] をクリックします。

  11. [ページの選択] で、[スケジュール] をクリックし、[新規作成] をクリックします。

  12. [新しいジョブ スケジュール] ダイアログ ボックスで、[名前] ボックスにスケジュール名を入力し、[OK] をクリックします。

    この手順により、日曜日午前 12 時 00 分のスケジュールが作成されます。 次の手順では、ジョブを手動で実行する方法を示します。 ジョブを監視しているときに、ジョブを実行するスケジュールを指定することもできます。

  13. [新しいジョブ] ダイアログ ボックスで、[OK] をクリックします。

  14. オブジェクト エクスプローラーで、[ジョブ] を展開し、作成したジョブを右クリックして、[ステップでジョブを開始] をクリックします。

    このジョブにはステップが 1 つしかないため、すぐにジョブが実行されます。 ジョブに複数のステップが含まれている場合、ジョブを開始するステップを選択できます。

  15. ジョブが完了したら、[閉じる] をクリックします。

例 2: 定期タスクでのディメンションおよびパーティションのバッチ処理

この例の手順では、Analysis Services のデータベース ディメンションをバッチ処理するジョブを作成してスケジュールを設定する方法と、そのディメンションに集計で依存するキューブ パーティションを処理する方法を示します。 Analysis Services オブジェクトのバッチ処理の詳細については、「Analysis Services オブジェクトのバッチ処理」を参照してください。

SQL Server エージェント ジョブでディメンションとパーティションをバッチ処理するスクリプトを作成する

  1. 同じデータベースを使用して、[ディメンション] を展開し、[Customer] ディメンションを右クリックして [処理] をクリックします。

  2. [ディメンションの処理] ダイアログ ボックスにある [オブジェクト一覧][処理オプション] 列で、この列のオプションが [完全処理] であることを確認します。

  3. [スクリプト] をクリックします。

    この手順により、ディメンションを処理する XMLA スクリプトを含む XML クエリ ウィンドウが表示されます。

  4. [ディメンションの処理] ダイアログ ボックスで、[キャンセル] をクリックしてダイアログ ボックスを閉じます。

  5. [キューブ][Adventure Works][メジャー グループ][インターネット販売][パーティション] の順に展開し、一覧の最後のパーティションを右クリックして [処理] をクリックします。

  6. [パーティションの処理] ダイアログ ボックスにある [オブジェクト一覧][処理オプション] 列で、この列のオプションが [完全処理] であることを確認します。

  7. [スクリプト] をクリックします。

    この手順により、パーティションを処理する XMLA スクリプトを含む 2 番目の XML クエリ ウィンドウが表示されます。

  8. [パーティションの処理] ダイアログ ボックスで、[キャンセル] をクリックしてエディターを閉じます。

    この時点で、2 つのスクリプトをマージし、ディメンションが最初に処理されるようにする必要があります。

    注記注意

    パーティションが最初に処理された場合、後続のディメンション処理により、パーティションが未処理になる可能性があります。 その場合、パーティションを処理済みの状態にするには、2 番目の処理が必要です。

  9. パーティションを処理する XMLA スクリプトを含む XMLA クエリ ウィンドウで、Batch タグおよび Parallel タグの内側にあるコードを強調表示し、強調表示されたスクリプトを右クリックして [コピー] をクリックします。

    <Process xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
        <Object>
          <DatabaseID> Adventure Works DW Multidimensional</DatabaseID>
          <CubeID>Adventure Works</CubeID>
          <MeasureGroupID>Fact Internet Sales 1</MeasureGroupID>
          <PartitionID> Internet_Sales_2004</PartitionID>
        </Object>
        <Type>ProcessFull</Type>
        <WriteBackTableCreation>UseExisting</WriteBackTableCreation>
      </Process>
    
  10. ディメンションを処理する XMLA スクリプトを含む XMLA クエリ ウィンドウを開きます。 スクリプト内で </Process> タグの左まで右クリックし、[貼り付け] をクリックします。

    次の例は、変更後の XMLA スクリプトを示しています。

    <Batch xmlns="https://schemas.microsoft.com/analysisservices/2003/engine">
     <Parallel>
      <Process xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
        <Object>
          <DatabaseID>Adventure Works DW Multidimensional</DatabaseID>
          <DimensionID>Dim Customer</DimensionID>
        </Object>
        <Type>ProcessFull</Type>
        <WriteBackTableCreation>UseExisting</WriteBackTableCreation>
      </Process>
      <Process xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
        <Object>
          <DatabaseID>Adventure Works DW Multidimensional</DatabaseID>
          <CubeID>Adventure Works</CubeID>
          <MeasureGroupID>Fact Internet Sales 1</MeasureGroupID>
          <PartitionID>Internet_Sales_2004</PartitionID>
        </Object>
        <Type>ProcessFull</Type>
        <WriteBackTableCreation>UseExisting</WriteBackTableCreation>
      </Process>
     </Parallel>
    </Batch>
    
  11. 変更後の XMLA スクリプトを強調表示し、強調表示されたスクリプトを右クリックして [コピー] をクリックします。

  12. この手順により、XMLA スクリプトが Windows クリップボードにコピーされます。 XMLA スクリプトをクリップボードに残しておくか、ファイルに保存するか、メモ帳または別のテキスト エディターに貼り付けます。

バッチ処理ジョブを作成してスケジュールを設定する

  1. SQL Server のインスタンスに接続し、オブジェクト エクスプローラーを開きます。

  2. [SQL Server エージェント] を展開します。 サービスが実行されていない場合は開始します。

  3. [ジョブ] を右クリックし、[新しいジョブ] をクリックします。

  4. [新しいジョブ] ダイアログ ボックスで、[名前] ボックスにジョブ名を入力します。

  5. [ステップ] で、[新規作成] をクリックします。

  6. [新しいジョブ ステップ] ダイアログ ボックスで、[ステップ名] にステップ名を入力します。

  7. [種類] で、[SQL Server Analysis Services コマンド] を選択します。

  8. [実行するアカウント名] で、[SQL Server エージェント サービスのアカウント] を選択します。 「前提条件」で説明したように、このアカウントには Analysis Services に対する管理権限が必要です。

  9. [サーバー] で、Analysis Services インスタンスのサーバー名を指定します。

  10. [コマンド] で、右クリックして [貼り付け] を選択します。

  11. [OK] をクリックします。

  12. [スケジュール] ページで [新規作成] をクリックします。

  13. [新しいジョブ スケジュール] ダイアログ ボックスで、[名前] ボックスにスケジュール名を入力し、[OK] をクリックします。

    この手順により、日曜日午前 12 時 00 分のスケジュールが作成されます。 次の手順では、ジョブを手動で実行する方法を示します。 ジョブを監視しているときに、ジョブを実行するスケジュールを選択することもできます。

  14. [OK] をクリックして、ダイアログ ボックスを閉じます。

  15. オブジェクト エクスプローラーで、[ジョブ] を展開し、作成したジョブを右クリックして、[ステップでジョブを開始] をクリックします。

    このジョブにはステップが 1 つしかないため、すぐにジョブが実行されます。 ジョブに複数のステップが含まれている場合、ジョブを開始するステップを選択できます。

  16. ジョブが完了したら、[閉じる] をクリックします。

関連項目

概念

処理オプションと設定 (Analysis Services)

Analysis Services の管理タスクのスクリプト作成