Analysis Services のパーソナル化拡張機能
SQL Server Analysis Services のパーソナル化拡張機能は、プラグイン アーキテクチャを実装するという概念の基盤です。プラグイン アーキテクチャでは、新しいキューブ オブジェクトや機能を動的に開発し、他の開発者と簡単に共有することができます。そのため、Analysis Services のパーソナル化拡張機能では、次のことを実現できます。
動的な設計と配置 Analysis Services のパーソナル化拡張機能を設計して配置するとすぐに、ユーザーが次のユーザー セッションの開始時にオブジェクトや機能にアクセスできるようになります。
インターフェイス非依存 Analysis Services のパーソナル化拡張機能の作成に使用されたインターフェイスに関係なく、ユーザーは任意のインターフェイスを使用してオブジェクトや機能にアクセスできます。
セッション コンテキスト Analysis Services のパーソナル化拡張機能は、既存のインフラストラクチャのパーマネント オブジェクトではなく、キューブを再処理する必要はありません。この機能は、ユーザーがデータベースに接続したときにそのユーザー用に公開および作成され、そのユーザー セッションの間だけ使用できます。
迅速な配布 Analysis Services のパーソナル化拡張機能の場所や入手方法に関する詳細な仕様を作成することなく、この拡張機能を他のソフトウェア開発者と共有できます。
Analysis Services のパーソナル化拡張機能の用途はさまざまです。たとえば、会社の売上にさまざまな通貨が使用されているとします。この場合、キューブにアクセスしている人物の現地通貨で連結売上を返す計算されるメンバを作成します。このメンバをパーソナル化拡張機能として作成します。その後、この計算されるメンバをユーザー グループと共有します。共有すると、ユーザーはサーバーに接続するとすぐに計算されるメンバにアクセスできるようになります。ユーザーは、計算されるメンバの作成に使用されたインターフェイスと同じインターフェイスを使用していなくてもアクセスできます。
Analysis Services のパーソナル化拡張機能は、既存のマネージ アセンブリ アーキテクチャに対する単純で簡潔な変更で、Analysis Services の Microsoft.AnalysisServices.AdomdServer オブジェクト モデル、多次元式 (MDX) 構文、およびスキーマ行セット全体で公開されます。
論理アーキテクチャ
Analysis Services のパーソナル化拡張機能のアーキテクチャは、マネージ アセンブリ アーキテクチャと次の 4 つの基本要素に基づいています。
[PlugInAttribute] カスタム属性
サービスの開始時に、Analysis Services によって必要なアセンブリが読み込まれ、PlugInAttribute カスタム属性を持つクラスが特定されます。注 .NET Framework では、カスタム属性は、コードを記述して実行時の動作を指定する方法と定義されています。詳細については、MSDN の『.NET Framework 開発者ガイド』で、「属性の概要」を参照してください。
PlugInAttribute カスタム属性を持つすべてのクラスに対して、Analysis Services によって既定のコンストラクタが呼び出されます。起動時にすべてのコンストラクタを呼び出すと、新しいオブジェクトの作成元となる、ユーザー操作に依存しない共通の場所が提供されます。
クラス コンストラクタでは、通常、パーソナル化拡張機能の作成および管理に関する情報の少量のキャッシュの構築に加え、SessionOpened および SessionClosing イベントのサブスクライブが実行されます。これらのイベントをサブスクライブしないと、共通言語ランタイム (CLR) のガベージ コレクタによって、誤ってクラスにクリーンアップのマークが付けられる可能性があります。
セッション コンテキスト
パーソナル化拡張機能に基づくオブジェクトの場合、クライアント セッション中に Analysis Services によって実行環境が作成され、この環境でほとんどのオブジェクトが動的に作成されます。他の CLR アセンブリと同様に、この実行環境からも他の関数やストアド プロシージャにアクセスできます。ユーザー セッションが終了すると、作成されたオブジェクトが Analysis Services によって動的に削除され、実行環境が終了されます。イベント
オブジェクトの作成は、セッション イベント On-Cube-OpenedCubeOpened および On-Cube-ClosingCubeClosing によってトリガされます。クライアントとサーバー間の通信は、特定のイベントを介して行われます。このイベントによって、クライアントのオブジェクトが作成される状況がクライアントで認識されるようになります。クライアントの環境は、セッション イベントとキューブ イベントという 2 つのイベント セットを使用して動的に作成されます。
セッション イベントは、サーバー オブジェクトに関連付けられます。クライアントがサーバーにログオンすると、Analysis Services によってセッションが作成され、SessionOpened イベントがトリガされます。クライアントがサーバー上のセッションを終了すると、Analysis Services によって SessionClosing イベントがトリガされます。
キューブ イベントは、接続オブジェクトに関連付けられます。キューブに接続すると、CubeOpened イベントがトリガされます。キューブを閉じるか別のキューブに変更することによってキューブへの接続を終了すると、CubeClosing イベントがトリガされます。
トレーサビリティとエラー処理
SQL Server Profiler を使用すると、すべての操作をトレースできます。未処理のエラーは、Windows イベント ログにレポートされます。
すべてのオブジェクトの作成および管理はこのアーキテクチャに依存せず、オブジェクトの開発者が責任を負います。
インフラストラクチャの基盤
Analysis Services のパーソナル化拡張機能は、既存のコンポーネントに基づいています。次に、パーソナル化拡張機能を実現する強化や改善の概要を示します。
アセンブリ
カスタム属性 PlugInAttribute をカスタム アセンブリに追加して、Analysis Services のパーソナル化拡張機能のクラスを特定することができます。
AdomdServer オブジェクト モデルへの変更
Microsoft.AnalysisServices.AdomdServer オブジェクト モデル内の次のオブジェクトが強化されたか、モデルに追加されています。
新しい AdomdConnection クラス
新しく追加された AdomdConnection クラスは、プロパティとイベントの両方を介していくつかのパーソナル化拡張機能を公開します。
プロパティ
SessionID: 現在の接続のセッション ID を表す読み取り専用の文字列値です。
ClientCulture: 現在のセッションに関連付けられているクライアントのカルチャへの読み取り専用の参照です。
User: 現在のユーザーを表す ID インターフェイスへの読み取り専用の参照です。
イベント
Context クラスの新しいプロパティ
Context クラスには、2 つの新しいプロパティが追加されています。
Server: 新しいサーバー オブジェクトへの読み取り専用の参照です。
CurrentConnection: 新しい AdomdConnection オブジェクトへの読み取り専用の参照です。
新しい Server クラス
AdomdCommand クラス
MDX の拡張と強化
CREATE MEMBER コマンドに caption プロパティ、display_folder プロパティ、および associated_measure_group プロパティが追加されました。
UPDATE MEMBER コマンドが追加され、更新が必要になり計算の解決時の優先順位が失われることになる場合のメンバの再作成が不要になりました。更新では、計算されるメンバのスコープの変更、計算されるメンバの別の親への移動、または別の solveorder の定義は実行できません。
CREATE SET コマンドに caption プロパティ、display_folder プロパティ、および新しい STATIC | DYNAMIC キーワードが追加されました。静的とは、作成時にのみセットを評価することを示します。動的とは、クエリでセットが使用されるたびに、セットを評価することを示します。キーワードが省略された場合、既定値は STATIC になります。
CREATE KPI コマンドと DROP KPI コマンドが MDX 構文に追加されました。KPI は、任意の MDX スクリプトから動的に作成できます。
スキーマ行セットの拡張
MDSCHEMA_MEMBERS に scope 列が追加されました。スコープの値は MDMEMBER_SCOPE_GLOBAL=1 と MDMEMBER_SCOPE_SESSION=2 です。
MDSCHEMA_SETS に set_evaluation_context 列が追加されました。セットの評価コンテキストの値は MDSET_RESOLUTION_STATIC = 1 と MDSET_RESOLUTION_DYNAMIC = 2 です。
MDSCHEMA_KPIS に scope 列が追加されました。スコープの値は MDKPI_SCOPE_GLOBAL=1 と MDKPI_SCOPE_SESSION=2 です。