SQL Server エージェント サービスを使用すると、Analysis Services の管理タスクを必要な順序と時刻で実行するようにスケジュールできます。 スケジュールされたタスクは、定期的または予測可能なサイクルで実行されるプロセスを自動化するのに役立ちます。 ビジネス アクティビティが遅い時間帯に実行されるように、キューブ処理などの管理タスクをスケジュールできます。 SQL Server エージェント ジョブ内にジョブ ステップを作成することで、タスクの実行順序を決定することもできます。 たとえば、キューブを処理し、キューブのバックアップを実行できます。
ジョブ ステップを使用すると、実行フローを制御できます。 1 つのジョブが失敗した場合は、残りのタスクの実行を続行するか、実行を停止するように SQL Server エージェントを構成できます。 ジョブの実行の成功または失敗に関する通知を送信するように SQL Server エージェントを構成することもできます。
このトピックでは、SQL Server エージェントを使用して XMLA スクリプトを実行する 2 つの方法を示すチュートリアルです。 最初の例では、1 つのディメンションの処理をスケジュールする方法を示します。 例 2 は、スケジュールに従って実行される 1 つのスクリプトに処理タスクを組み合わせる方法を示しています。 このチュートリアルを完了するには、次の前提条件を満たす必要があります。
[前提条件]
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 エージェント ジョブでディメンションを処理するためのスクリプトを作成する
SQL Server Management Studio で、Analysis Services に接続します。 データベース フォルダーを開き、ディメンションを見つけます。 ディメンションを右クリックし、[ プロセス] を選択します。
[プロセス ディメンション] ダイアログ ボックスの [オブジェクト] の一覧の [処理オプション] 列で、この列のオプションが [完全処理] であることを確認します。 そうでない場合は、[ プロセス オプション] でオプションをクリックし、ドロップダウン リストから [ フルプロセス ] を選択します。
[ スクリプト] をクリックします。
この手順では、ディメンションを処理する XMLA スクリプトを含む XML クエリ ウィンドウを開きます。
[ ディメンションの処理 ] ダイアログ ボックスで、[ キャンセル ] をクリックしてダイアログ ボックスを閉じます。
[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>
ディメンション処理ジョブの作成とスケジュール設定
データベース エンジンのインスタンスに接続し、オブジェクト エクスプローラーを開きます。
SQL Server エージェントを展開します。
[ ジョブ ] を右クリックし、[ 新しいジョブ] を選択します。
[ 新しいジョブ ] ダイアログ ボックスで、[名前] にジョブ名を入力 します。
[ ページの選択] で [ ステップ] を選択し、[ 新規] をクリックします。
[ 新しいジョブ ステップ ] ダイアログ ボックスで、[ステップ名] にステップ名を入力 します。
サーバーで、Analysis Services の既定のインスタンスの localhost と、名前付きインスタンスの localhost\<instance 名>を入力します。
リモート コンピューターからジョブを実行する場合は、ジョブを実行するサーバー名とインスタンス名を使用します。 既定のインスタンスには <server name> 形式を使用し、名前付きインスタンスの <場合はサーバー名>\<instance 名>を使用します。
[ 種類] で、[ SQL Server Analysis Services コマンド] を選択します。
[コマンド] で右クリックし、[貼り付け] を選択します。 前の手順で生成した XMLA スクリプトがコマンド ウィンドウに表示されます。
OK をクリックします。
[ ページの選択] で、[ スケジュール] をクリックし、[ 新規] をクリックします。
[ 新しいジョブ スケジュール ] ダイアログ ボックスで、[ 名前] にスケジュール名を入力し、[OK] をクリック します。
この手順では、日曜日の午前 12 時にスケジュールを作成します。 次のステップでは、ジョブを手動で実行する方法を説明します。 ジョブを監視するときに実行するスケジュールを指定することもできます。
[ 新しいジョブ ] ダイアログ ボックスで、[OK] をクリック します。
オブジェクト エクスプローラーで、[ジョブ] を展開し、作成したジョブを右クリックし、[ステップでジョブの開始] を選択します。
ジョブには 1 つのステップしかないため、ジョブはすぐに実行されます。 ジョブに複数のステップが含まれている場合は、ジョブを開始するステップを選択できます。
ジョブが完了したら、[ 閉じる] をクリックします。
例 2: スケジュールされたタスクでディメンションとパーティションをバッチ処理する
この例の手順では、Analysis Services データベース ディメンションをバッチ処理するジョブを作成およびスケジュールする方法と、同時に集計のディメンションに依存するキューブ パーティションを処理する方法を示します。 Analysis Services オブジェクトのバッチ処理の詳細については、「 バッチ処理 (Analysis Services)」を参照してください。
SQL Server エージェント ジョブでディメンションとパーティションをバッチ処理するためのスクリプトを作成する
同じデータベースを使用して、[ ディメンション] を展開し、 Customer ディメンションを右クリックして、[ プロセス] を選択します。
[プロセス ディメンション] ダイアログ ボックスの [オブジェクトの一覧] の [プロセス オプション] 列で、この列のオプションが [完全処理] であることを確認します。
[ スクリプト] をクリックします。
この手順では、ディメンションを処理する XMLA スクリプトを含む XML クエリ ウィンドウを開きます。
[ ディメンションの処理 ] ダイアログ ボックスで、[ キャンセル ] をクリックして、ダイアログ ボックスを閉じることができます。
キューブの展開、Adventure Works の展開、メジャー グループの展開、Internet Sales の展開、パーティションの展開、一覧で最後のパーティションを右クリックし、[プロセス] を選択します。
[プロセス パーティション] ダイアログ ボックスの [オブジェクトの一覧] の [プロセス オプション] 列で、この列のオプションが [完全処理] であることを確認します。
[ スクリプト] をクリックします。
この手順では、パーティションを処理する XMLA スクリプトを含む 2 つ目の XML クエリ ウィンドウを開きます。
[ プロセス パーティション ] ダイアログ ボックスで、[ キャンセル ] をクリックしてエディターを閉じます。
この時点で、2 つのスクリプトをマージし、ディメンションが最初に処理されるようにする必要があります。
警告
パーティションが最初に処理されると、後続のディメンション処理によってパーティションが未処理になります。 その後、パーティションが処理された状態に達するには、2 番目の処理が必要になります。
パーティションを処理する 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>
ディメンションを処理する 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>
変更した XMLA スクリプトを強調表示し、強調表示されたスクリプトを右クリックして、[コピー] を選択します 。
この手順では、XMLA スクリプトを Windows クリップボードにコピーします。 XMLA スクリプトはクリップボードに残したり、ファイルに保存したり、メモ帳や別のテキスト エディターに貼り付けたりすることができます。
バッチ処理ジョブを作成してスケジュールする
SQL Server のインスタンスに接続し、オブジェクト エクスプローラーを開きます。
SQL Server エージェントを展開します。 実行されていない場合は、サービスを開始します。
[ ジョブ ] を右クリックし、[ 新しいジョブ] を選択します。
[ 新しいジョブ ] ダイアログ ボックスで、[名前] にジョブ名を入力 します。
[ ステップ] で、[ 新規] をクリックします。
[ 新しいジョブ ステップ ] ダイアログ ボックスで、[ステップ名] にステップ名を入力 します。
[ 種類] で、[ SQL Server Analysis Services コマンド] を選択します。
[ 実行] で、 SQL Server エージェント サービス アカウントを選択します。 [前提条件] セクションで、このアカウントには Analysis Services に対する管理アクセス許可が必要であることを思い出してください。
[サーバー] で、Analysis Services インスタンスのサーバー名を指定します。
[コマンド] で右クリックし、[貼り付け] を選択します。
OK をクリックします。
[スケジュール] ページ で 、[ 新規] をクリックします。
[ 新しいジョブ スケジュール ] ダイアログ ボックスで、[ 名前] にスケジュール名を入力し、[OK] をクリック します。
この手順では、日曜日の午前 12 時にスケジュールを作成します。 次のステップでは、タスクを手動で実行する方法を示します。 ジョブを監視するときにジョブを実行するスケジュールを選択することもできます。
ダイアログ ボックスを閉じるには [OK] をクリックします。
オブジェクト エクスプローラーで[ジョブ]を展開し、作成したジョブを右クリックして、[ステップでジョブを開始]を選択します。
ジョブには 1 つのステップしかないため、ジョブはすぐに実行されます。 ジョブに複数のステップが含まれている場合は、ジョブを開始するステップを選択できます。
ジョブが完了したら、[ 閉じる] をクリックします。
こちらもご覧ください
処理オプションと設定 (Analysis Services)
Analysis Services の管理タスクをスクリプトで作成