次の方法で共有


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-OpenedCubeOpenedOn-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 クラスは新しく、プロパティとイベントの両方を通じていくつかのパーソナル化拡張機能を公開します。

プロパティ

イベント

Context クラスの新しいプロパティ

Microsoft.AnalysisServices.AdomdServer.Context クラスには、次の 2 つの新しいプロパティがあります。

新しいサーバー クラス

Microsoft.AnalysisServices.AdomdServer.Server クラスは新しく、クラスプロパティとイベントの両方を通じていくつかのパーソナル化拡張機能を公開します。

プロパティ

イベント

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 キーワードを使用して拡張されます。 静的 とは、セットが作成時にのみ評価されることを意味します。 動的 とは、セットがクエリで使用されるたびにセットが評価されることを意味します。 キーワードを省略した場合、既定値は 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追加されます。 スコープの値は、MDKPI_SCOPE_GLOBAL=1、MDKPI_SCOPE_SESSION=2 です。