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 は必要なアセンブリを読み込み、 Microsoft.AnalysisServices.AdomdServer.PlugInAttribute カスタム属性を持つクラスを決定します。
注意
.NET Frameworkでは、コードを記述し、実行時の動作に影響を与える方法としてカスタム属性を定義します。 詳細については、MSDN の.NET Framework開発者ガイドの「属性の概要」を参照してください。
Microsoft.AnalysisServices.AdomdServer.PlugInAttribute カスタム属性を持つすべてのクラスについて、Analysis Services は既定のコンストラクターを呼び出します。 起動時にすべてのコンストラクターを呼び出すと、新しいオブジェクトの作成元となる、ユーザー操作に依存しない共通の場所が提供されます。
パーソナル化拡張機能の作成と管理に関する情報の小さなキャッシュを構築するだけでなく、クラス コンストラクターは通常、 Microsoft.AnalysisServices.AdomdServer.Server.SessionOpened イベントと Microsoft.AnalysisServices.AdomdServer.Server.SessionClosing イベントを サブスクライブします。 これらのイベントをサブスクライブしないと、共通言語ランタイム (CLR) のガベージ コレクターによって、誤ってクラスにクリーンアップのマークが付けられる可能性があります。
セッション コンテキスト
パーソナル化拡張機能に基づくオブジェクトの場合、Analysis Services はクライアント セッション中に実行環境を作成し、そのほとんどのオブジェクトをこの環境で動的にビルドします。 他の CLR アセンブリと同様に、この実行環境からも他の関数やストアド プロシージャにアクセスできます。 ユーザー セッションが終了すると、Analysis Services は動的に作成されたオブジェクトを削除し、実行環境を閉じます。
イベント
オブジェクトの作成は、セッション イベント On-Cube-OpenedCubeOpened
および On-Cube-ClosingCubeClosing
によってトリガーされます。
クライアントとサーバー間の通信は、特定のイベントを介して行われます。 このイベントによって、クライアントのオブジェクトが作成される状況がクライアントで認識されるようになります。 クライアントの環境は、セッション イベントとキューブ イベントという 2 つのイベント セットを使用して動的に作成されます。
セッション イベントは、サーバー オブジェクトに関連付けられます。 クライアントがサーバーにログオンすると、Analysis Services によってセッションが作成され、 Microsoft.AnalysisServices.AdomdServer.Server.SessionOpened イベントがトリガーされます 。 クライアントがサーバー上のセッションを終了すると、Analysis Services によって Microsoft.AnalysisServices.AdomdServer.Server.SessionClosing イベントがトリガーされます。
キューブ イベントは、接続オブジェクトに関連付けられます。 キューブに接続すると、 Microsoft.AnalysisServices.AdomdServer.AdomdConnection.CubeOpened イベントがトリガーされます 。 キューブを閉じるか、別のキューブに変更することで、キューブへの接続を閉じると、 Microsoft.AnalysisServices.AdomdServer.AdomdConnection.CubeClosing イベントが トリガーされます。
トレーサビリティとエラー処理
すべてのアクティビティは、SQL Server Profilerを使用して追跡できます。 未処理のエラーは、Windows イベント ログにレポートされます。
すべてのオブジェクトの作成および管理はこのアーキテクチャに依存せず、オブジェクトの開発者が責任を負います。
インフラストラクチャの基盤
Analysis Services パーソナル化拡張機能は、既存のコンポーネントに基づいています。 次に、パーソナル化拡張機能を実現する強化や改善の概要を示します。
アセンブリ
カスタム属性 Microsoft.AnalysisServices.AdomdServer.PlugInAttribute をカスタム アセンブリに追加して、Analysis Services パーソナル化拡張機能クラスを識別できます。
AdomdServer オブジェクト モデルへの変更
Microsoft.AnalysisServices.AdomdServer オブジェクト モデルの次のオブジェクトが強化またはモデルに追加されました。
新しい AdomdConnection クラス
Microsoft.AnalysisServices.AdomdServer.AdomdConnection クラスは新しく、プロパティとイベントの両方を通じていくつかのパーソナル化拡張機能を公開します。
Properties
Microsoft.AnalysisServices.AdomdServer.AdomdConnection.SessionID*。現在の接続のセッション ID を表す読み取り専用の文字列値です。
Microsoft.AnalysisServices.AdomdServer.AdomdConnection.ClientCulture*。現在のセッションに関連付けられているクライアント カルチャへの読み取り専用参照です。
Microsoft.AnalysisServices.AdomdServer.AdomdConnection.User*。現在のユーザーを表す ID インターフェイスへの読み取り専用参照です。
イベント
Microsoft.AnalysisServices.AdomdServer.AdomdConnection.CubeOpened
Microsoft.AnalysisServices.AdomdServer.AdomdConnection.CubeClosing
Context クラスの新しいプロパティ
Microsoft.AnalysisServices.AdomdServer.Context クラスには、次の 2 つの新しいプロパティがあります。
新しいサーバー オブジェクトへの読み取り専用参照である Microsoft.AnalysisServices.AdomdServer.Context.Server*。
Microsoft.AnalysisServices.AdomdServer.Context.CurrentConnection*。新しい Microsoft.AnalysisServices.AdomdServer.AdomdConnection オブジェクトへの読み取り専用参照です。
新しい Server クラス
Microsoft.AnalysisServices.AdomdServer.Server クラスは新しく、クラスのプロパティとイベントの両方を通じていくつかのパーソナル化拡張機能を公開します。
Properties
Microsoft.AnalysisServices.AdomdServer.Server.Name*。サーバー名を表す読み取り専用の文字列値です。
Microsoft.AnalysisServices.AdomdServer.Server.Culture*。サーバーに関連付けられているグローバル カルチャへの読み取り専用参照。
イベント
AdomdCommand クラス
Microsoft.AnalysisServices.AdomdServer.AdomdCommand クラスで、次の MDX コマンドがサポートされるようになりました。
MDX の拡張と強化
CREATE MEMBER コマンドに caption
プロパティ、display_folder
プロパティ、および associated_measure_group
プロパティが追加されました。
UPDATE MEMBER コマンドが追加され、更新が必要になり計算の解決時の優先順位が失われることになる場合のメンバーの再作成が不要になりました。 更新では、計算されるメンバーのスコープの変更、計算されるメンバーの別の親への移動、または別の solveorder
の定義は実行できません。
CREATE SET コマンドに caption
プロパティ、display_folder
プロパティ、および新しい STATIC | DYNAMIC
キーワードが追加されました。 静的 とは、作成時にのみ set が評価されることを意味します。 動的 とは、セットがクエリで使用されるたびにセットが評価されることを意味します。 キーワードが省略された場合、既定値は STATIC
になります。
CREATE KPI コマンドと DROP KPI コマンドが MDX 構文に追加されました。 KPI は、任意の MDX スクリプトから動的に作成できます。
スキーマ行セットの拡張
スコープ 列MDSCHEMA_MEMBERS 追加されます。 スコープの値は 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 です。