AMO のその他のクラスとメソッド

ここでは、OLAP またはデータ マイニングに固有ではなく、Microsoft SQL Server Analysis Services のオブジェクトのさまざまな管理に役立つ、共通のクラスについて説明します。これらのクラスは、ストアド プロシージャ、トレース、例外、およびバックアップと復元などの機能を対象としています。

このトピックの内容は次のとおりです。

  • Assembly オブジェクト

  • Backup メソッドと Restore メソッド

  • Trace オブジェクト

  • CaptureLog クラスと CaptureXML 属性

  • AMOException 例外クラス

次の図は、このトピックで説明するクラスのリレーションシップを示しています。

AMO のその他のクラス

Assembly オブジェクト

Assembly オブジェクトを作成するには、サーバーのアセンブリ コレクションに新しいオブジェクトを追加した後、Update メソッドを使用して、サーバー上で Assembly オブジェクトを更新します。

Assembly オブジェクトを削除するには、Assembly オブジェクトの Drop メソッドを使用してこれを削除する必要があります。データベースのアセンブリのコレクションから Assembly オブジェクトを削除しても、そのアセンブリはアプリケーションを次回実行するまで見えなくなるだけで、削除されません。

利用可能なメソッドおよびプロパティの詳細については、「Microsoft.AnalysisServices」の「Microsoft.AnalysisServices..::..Assembly」を参照してください。

セキュリティに関する注意セキュリティに関する注意

COM アセンブリにより、セキュリティ上のリスクが生じる可能性があります。このリスクやその他の考慮事項により、SQL Server 2008 Analysis Services (SSAS) では、COM アセンブリが推奨されていません。COM アセンブリは、今後のリリースではサポートされない可能性があります。

Backup メソッドと Restore メソッド

Backup と Restore は、Analysis Services データベースをコピーし、そのコピーを使用してデータベースを復旧するためのメソッドです。Backup メソッドは Database オブジェクトに属し、Restore メソッドは Server オブジェクトに属します。

データベースのバックアップの実行を許可されているのは、サーバーおよびデータベースの管理者だけです。バックアップ元とは別のサーバー上にデータベースを復元できるのは、サーバー管理者だけです。データベース管理者は、自分が所有しているデータベースについてのみ、そのデータベースを上書きすることによってデータベースを復元できます。元のセキュリティ定義を使用してデータベースを復元した場合、データベース管理者が復元後のデータベースにアクセスできなくなる可能性があります。

データベース バックアップ ファイルには、.abf 拡張子を付ける必要があります。

Backup メソッド

データベースをバックアップするには、データベース オブジェクトの Backup メソッドを使用します。その際、バックアップ ファイルの名前をパラメーターとして指定します。

既定値

AllowOverwrite=false

BackupRemotePartitions=false

Security=CopyAll

ApplyCompression=true

Restore メソッド

データベースをサーバーに復元するには、パラメーターとしてバックアップ ファイルを指定し、サーバーの Restore メソッドを実行します。

既定値

AllowOverwrite=false

DataSourceType=Remote

Security=CopyAll

制限事項

  1. ローカル パーティションは、リモート パーティションとして復元することはできません。

  2. リモート パーティションは、ローカル パーティションとして復元することはできません。ただし、リモート パーティションがバックアップされた際のバックアップ元とは異なるサーバー上に復元する場合は、復元可能です。

Backup メソッドと Restore メソッドに共通のパラメーターとプロパティ

  • File は、バックアップ元またはバックアップ先となるファイルの名前 (UNC 名) です。

  • Location は、BackupFile などのサーバー固有のバックアップ情報を指定します。これを使用すると、リモート データベースに対して個別のバックアップ ファイルを指定できます。

  • DatasourceID は、リモート サーバーにおける下位データベースの ID を指定します。

  • リモート サーバーが変更された場合は、ConnectionString を使用して、リモート データ ソースを調整できます。DatasourceID は、ConnectionString が存在する場合は常に指定する必要があります。

  • Folder を使用すると、ローカル ハード ドライブ上のパーティションに対してフォルダーを再マップできます。

  • Original は、ローカル パーティションに対する元のフォルダーです。

  • New は、対応する "Original" の古いフォルダー内に配置するために使用したローカル パーティションに対する新しい場所です。

  • Password は、空白でない場合、サーバーによってバックアップ ファイルが暗号化されることを示します。

Trace オブジェクト

Trace は、Analysis Services のインスタンスを監視、再生、管理するためのフレームワークです。SQL Server Profiler などのクライアント アプリケーションはトレースをサブスクライブし、サーバーはトレース定義での指定に従ってトレース イベントを返します。

各イベントは、イベント クラスによって記述されます。イベント クラスは生成されたイベントの種類を記述します。イベント クラス内では、イベントのサブクラスによって、より詳細なレベルの分類が記述されます。各イベントは、多くの列によって記述されます。トレース イベントを記述する列は、すべてのイベントに対して一貫しており、SQL トレースの構造に準拠しています。各列に記録される情報は、イベント クラスに応じて異なる可能性があります。つまり、定義済みの列のセットは各トレースに対して定義されますが、列の意味はイベント クラスに応じて異なる可能性があります。たとえば、TextData 列は、すべてのステートメント イベントに対する元の ASSL を記録するために使用されます。

トレース定義には、トレースされるイベント クラスを 1 つ以上同時に含めることができます。各イベント クラスについて、トレース定義に 1 つ以上のデータ列を追加できますが、すべてのトレース列を使用する必要はありません。データベース管理者は、使用できる列のうちどれをトレース内に含めるかを決定できます。さらに、イベント クラスは、トレース内の任意の列に対するフィルターの条件に基づいて選択的にトレースできます。

トレースは、開始および削除できます。複数のトレースを任意のタイミングで一度に実行できます。トレース イベントは、実行中にキャプチャしたり、後から分析または再生するためにファイルに送信することができます。SQL Server Profiler は、Analysis Services トレース イベントを分析および再生するためのツールです。同じトレースからイベントを受け取るために、複数の接続を使用できます。

トレースは、サーバー トレースとセッション トレースの 2 つのグループに分けられます。サーバー トレースは、サーバー内のすべてのイベントについて通知します。セッション トレースは、現在のセッション内のイベントについてのみ通知します。

サーバーのトレース コレクションからのトレースは、次の方法で定義します。

  1. Trace オブジェクトを作成し、トレース ID、名前、ログ ファイル名、追加と上書きのどちらを実行するかなどの基本データを設定します。

  2. トレース オブジェクトの Events コレクションに、監視する Events を追加します。各イベントに対して、データ列が追加されます。

  3. 不要なデータの行を除外するために、それらの不要なデータの行をフィルター コレクションに追加してフィルターを設定します。

  4. トレースを開始します。トレースを作成しても、データの収集は開始されません。

  5. トレースを停止します。

  6. SQL Server Profiler を使用してトレース ファイルを確認します。

セッション オブジェクトによるトレースを取得する方法は次のとおりです。

  1. アプリケーションで、SessionTrace によって生成されたトレース イベントを処理するための関数を定義します。使用できるイベントは OnEvent と Stopped です。

  2. 定義した関数をイベント ハンドラーに追加します。

  3. セッション トレースを開始します。

  4. プロセスを実行し、関数ハンドラーにイベントをキャプチャさせます。

  5. セッション トレースを停止します。

  6. アプリケーションを続行します。

CaptureLog クラスと CaptureXML 属性

AMO によって実行されるすべてのアクションは、XMLA メッセージとしてサーバーに送信されます。AMO によって、SOAP ヘッダーを持たないこれらのメッセージをすべてキャプチャする手段が提供されます。詳細については、「AMO クラスの概要」を参照してください。CaptureLog は、オブジェクトと操作をスクリプト出力するための AMO 内のメカニズムです。オブジェクトと操作のスクリプトは XMLA で作成されます。

XML のキャプチャを開始するには、CaptureXML サーバー オブジェクト プロパティを true に設定する必要があります。その後、サーバーに送信されるすべてのアクションが、サーバーに送信されることなく、CaptureLog クラスでキャプチャされるようになります。CaptureLog にはキャプチャ ログを消去するために使用する Clear メソッドがあるため、CaptureLog はクラスと見なされます。

ログを読み取るには、文字列コレクションを取得し、それらの文字列の反復処理を開始します。また、サーバー オブジェクト メソッド ConcatenateCaptureLog を使用して、すべてのログを 1 つの文字列に連結することもできます。ConcatenateCaptureLog には、3 つのパラメーターがあり、そのうち 2 つは必須です。必須パラメーターは、ブール型の transactional、およびブール型の parallel です。transactional が true に設定されている場合は、各コマンドが個別のトランザクションとして扱われるのではなく、XML バッチ ファイルが単一のトランザクションとして作成されることを示します。parallel が true に設定されている場合は、バッチ ファイル内のすべてのコマンドが記録された順ではなく、同時実行として記録されることを示します。

AMOException 例外クラス

AMOException 例外クラスを使用して、AMO によってスローされるアプリケーション内の例外を簡単にキャッチできます。

AMO は、さまざまな問題が検出されるたびに例外をスローします。次の表は、AMO によって処理される例外の種類を示しています。例外は AmoException クラスから派生します。

例外

発生元

説明

AmoException

基本クラス

必要な親オブジェクトが見つからない場合、または必要なアイテムがコレクション内で見つからない場合に、アプリケーションはこの例外を受け取ります。

OutOfSyncException

AMOException から派生

AMO がエンジンに同期されておらず、AMO が認識していないオブジェクト参照をエンジンが返す場合、アプリケーションはこの例外を受け取ります。

OperationException

AMOException から派生

これは、アプリケーションが頻繁に受け取る重要な例外です。この例外には、サーバーから発生するエラーの詳細が含まれています。このエラーの原因としては、更新、処理、削除などの不正な AMO 操作が考えられます。

ResponseFormatException

AMOException から派生

この例外は、AMO によって認識されない形式のメッセージをエンジンが返す場合に発生します。

ConnectionException

AMOException から派生

この例外は、(Server.Connect を使用して) 接続を確立できない場合、または AMO がエンジンと通信している間 (更新、処理、または削除の間など) に接続が失われる場合に発生します。