Freigeben über


Die Analysis Services-Personalisierungserweiterungen

SQL Server Analysis Services-Personalisierungserweiterungen sind die Grundlage für die Implementierung einer Plug-In-Architektur. In einer Plug-In-Architektur können Sie neue Cubeobjekte und -funktionen dynamisch entwickeln und problemlos für andere Entwickler freigeben. Als solche bieten Analysis Services-Personalisierungserweiterungen die Funktionalität, die es ermöglicht, Folgendes zu erreichen:

  • Dynamisches Design und dynamische Bereitstellung Unmittelbar nach dem Entwerfen und Bereitstellen von Analysis Services-Personalisierungserweiterungen haben Benutzer Zugriff auf die Objekte und Funktionen zu Beginn der nächsten Benutzersitzung.

  • Schnittstellenunabhängigkeit Unabhängig von der Schnittstelle, die Sie zum Erstellen der Analysis Services-Personalisierungserweiterungen verwenden, können Benutzer eine beliebige Schnittstelle verwenden, um auf die Objekte und Funktionen zuzugreifen.

  • Sitzungskontext Analysis Services-Personalisierungserweiterungen sind keine dauerhaften Objekte in der vorhandenen Infrastruktur und erfordern keine erneute Verarbeitung des Cubes. Sie werden für den Benutzer zum Zeitpunkt der Verbindung mit der Datenbank verfügbar gemacht und für den Benutzer erstellt und bleiben für die Dauer dieser Benutzersitzung verfügbar.

  • Schnelle Verteilung Teilen Sie Analysis Services-Personalisierungserweiterungen mit anderen Softwareentwicklern, ohne detaillierte Spezifikationen darüber zu erhalten, wo oder wie Sie diese erweiterte Funktionalität finden können.

Analysis Services-Personalisierungserweiterungen haben viele Verwendungsmöglichkeiten. Beispielsweise verfügt Ihr Unternehmen über Verkäufe, die unterschiedliche Währungen umfassen. Sie erstellen ein berechnetes Element, das den konsolidierten Umsatz in der lokalen Währung der Person zurückgibt, die auf den Cube zugreift. Sie erstellen dieses Mitglied als Personalisierungserweiterung. Anschließend geben Sie dieses berechnete Mitglied für eine Gruppe von Benutzern freigegeben. Nach der Freigabe haben diese Benutzer unmittelbaren Zugriff auf das berechnete Mitglied, sobald sie eine Verbindung mit dem Server herstellen. Sie haben Zugriff, auch wenn sie nicht dieselbe Schnittstelle wie die Schnittstelle verwenden, die zum Erstellen des berechneten Elements verwendet wurde.

Analysis Services-Personalisierungserweiterungen sind eine einfache und elegante Änderung an der vorhandenen verwalteten Assemblyarchitektur und werden im gesamten Analysis Services Microsoft.AnalysisServices.AdomdServer-Objektmodell , der MDX-Syntax (Multidimensional Expressions) und schema rowsets verfügbar gemacht.

Logische Architektur

Die Architektur für Analysis Services-Personalisierungserweiterungen basiert auf der verwalteten Assemblyarchitektur und den folgenden vier grundlegenden Elementen:

Das benutzerdefinierte Attribut [PlugInAttribute]
Beim Starten des Diensts lädt Analysis Services die erforderlichen Assemblys und bestimmt, welche Klassen das benutzerdefinierte Attribut "Microsoft.AnalysisServices.AdomdServer.PlugInAttribute " aufweisen.

Hinweis

Das .NET Framework definiert benutzerdefinierte Attribute als Eine Möglichkeit, Ihren Code zu beschreiben und das Laufzeitverhalten zu beeinflussen. Weitere Informationen finden Sie im Thema "Attributes Overview" im .NET Framework Developer's Guide auf MSDN.

Für alle Klassen mit dem benutzerdefinierten Attribut "Microsoft.AnalysisServices.AdomdServer.PlugInAttribute " ruft Analysis Services ihre Standardkonstruktoren auf. Das Aufrufen aller Konstruktoren beim Start stellt einen gemeinsamen Speicherort bereit, an dem neue Objekte erstellt werden sollen und die unabhängig von jeder Benutzeraktivität sind.

Zusätzlich zum Erstellen eines kleinen Caches mit Informationen zum Erstellen und Verwalten von Personalisierungserweiterungen abonniert der Klassenkonstruktor in der Regel die Ereignisse "Microsoft.AnalysisServices.AdomdServer.Server.SessionOpened " und "Microsoft.AnalysisServices.AdomdServer.Server.SessionClosing ". Wenn Sie diese Ereignisse nicht abonnieren, wird die Klasse möglicherweise nicht für die Bereinigung durch den Garbage Collector für die Common Language Runtime (CLR) gekennzeichnet.

Sitzungskontext
Für Objekte, die auf Personalisierungserweiterungen basieren, erstellt Analysis Services während der Clientsitzung eine Ausführungsumgebung und erstellt dynamisch die meisten dieser Objekte in dieser Umgebung. Wie jede andere CLR-Assembly hat diese Ausführungsumgebung auch Zugriff auf andere Funktionen und gespeicherte Prozeduren. Wenn die Benutzersitzung endet, entfernt Analysis Services die dynamisch erstellten Objekte und schließt die Ausführungsumgebung.

Ereignisse
Die Objekterstellung wird durch die Sitzungsereignisse On-Cube-OpenedCubeOpened und On-Cube-ClosingCubeClosing.

Die Kommunikation zwischen dem Client und dem Server erfolgt über bestimmte Ereignisse. Diese Ereignisse machen den Client auf die Situationen aufmerksam, die dazu führen, dass die Objekte des Clients erstellt werden. Die Umgebung des Clients wird dynamisch mit zwei Ereignisgruppen erstellt: Sitzungsereignisse und Cubeereignisse.

Sitzungsereignisse sind dem Serverobjekt zugeordnet. Wenn sich ein Client auf einem Server anmeldet, erstellt Analysis Services eine Sitzung und löst das Ereignis "Microsoft.AnalysisServices.AdomdServer.Server.SessionOpened" aus . Wenn ein Client die Sitzung auf dem Server beendet, löst Analysis Services das Ereignis "Microsoft.AnalysisServices.AdomdServer.Server.SessionClosing" aus .

Cubeereignisse werden dem Verbindungsobjekt zugeordnet. Durch das Herstellen einer Verbindung mit einem Cube wird das Ereignis "Microsoft.AnalysisServices.AdomdServer.AdomdConnection.CubeOpened" ausgelöst . Wenn Sie die Verbindung mit einem Cube schließen, indem Sie entweder den Würfel schließen oder zu einem anderen Cube wechseln, wird ein Microsoft.AnalysisServices.AdomdServer.AdomdConnection.CubeClosing-Ereignis ausgelöst.

Rückverfolgbarkeit und Fehlerbehandlung
Alle Aktivitäten können mithilfe von SQL Server Profiler nachverfolgt werden. Unbehandelte Fehler werden dem Windows-Ereignisprotokoll gemeldet.

Die gesamte Objekterstellung und -verwaltung ist unabhängig von dieser Architektur und liegt in der alleinigen Verantwortung der Entwickler der Objekte.

Infrastrukturstiftungen

Analysis Services-Personalisierungserweiterungen basieren auf vorhandenen Komponenten. Im Folgenden finden Sie eine Zusammenfassung der Verbesserungen und Verbesserungen, die die Personalisierungserweiterungsfunktionen bereitstellen.

Assemblys

Das benutzerdefinierte Attribut Microsoft.AnalysisServices.AdomdServer.PlugInAttribute kann Ihren benutzerdefinierten Assemblys hinzugefügt werden, um Analysis Services-Personalisierungserweiterungsklassen zu identifizieren.

Änderungen am AdomdServer-Objektmodell

Die folgenden Objekte im Microsoft.AnalysisServices.AdomdServer-Objektmodell wurden dem Modell erweitert oder hinzugefügt.

Neue AdomdConnection-Klasse

Die Microsoft.AnalysisServices.AdomdServer.AdomdConnection-Klasse ist neu und macht mehrere Personalisierungserweiterungen über Eigenschaften und Ereignisse verfügbar.

Eigenschaften

Ereignisse

Neue Eigenschaften in der Context-Klasse

Die Microsoft.AnalysisServices.AdomdServer.Context-Klasse verfügt über zwei neue Eigenschaften:

Neue Serverklasse

Die Microsoft.AnalysisServices.AdomdServer.Server-Klasse ist neu und macht mehrere Personalisierungserweiterungen über Klasseneigenschaften und Ereignisse verfügbar.

Eigenschaften

Ereignisse

AdomdCommand-Klasse

Die Microsoft.AnalysisServices.AdomdServer.AdomdCommand-Klasse unterstützt jetzt die folgenden MDX-Befehle:

MDX-Erweiterungen und Verbesserungen

Der BEFEHL CREATE MEMBER wird mit der caption Eigenschaft, der display_folder Eigenschaft und der associated_measure_group Eigenschaft erweitert.

Der Befehl UPDATE MEMBER wird hinzugefügt, um die Neuerstellung von Membern zu vermeiden, wenn eine Aktualisierung mit dem daraus resultierenden Verlust der Rangfolge bei der Lösung von Berechnungen erforderlich ist. Aktualisierungen können den Bereich des berechneten Elements nicht ändern, das berechnete Element auf ein anderes übergeordnetes Element verschieben oder eine andere solveorderdefinieren.

Der BEFEHL CREATE SET wird mit der caption Eigenschaft, der display_folder Eigenschaft und dem neuen STATIC | DYNAMIC Schlüsselwort erweitert. Statisch bedeutet, dass der Satz nur zur Erstellungszeit ausgewertet wird. "Dynamisch" bedeutet, dass der Satz jedes Mal ausgewertet wird, wenn der Satz in einer Abfrage verwendet wird. Der Standardwert ist STATIC , wenn ein Schlüsselwort weggelassen wird.

CREATE KPI- und DROP-KPI-Befehle werden der MDX-Syntax hinzugefügt. KPIs können dynamisch aus jedem MDX-Skript erstellt werden.

Schema Rowsets-Erweiterungen

Auf MDSCHEMA_MEMBERS Bereichsspalte wird hinzugefügt. Bereichswerte sind wie folgt: MDMEMBER_SCOPE_GLOBAL=1, MDMEMBER_SCOPE_SESSION=2.

On MDSCHEMA_SETS set_evaluation_context column is added. Legen Sie Werte für die Auswertung wie folgt fest: MDSET_RESOLUTION_STATIC = 1, MDSET_RESOLUTION_DYNAMIC = 2.

Auf MDSCHEMA_KPIS Bereichsspalte wird hinzugefügt. Bereichswerte sind wie folgt: MDKPI_SCOPE_GLOBAL=1, MDKPI_SCOPE_SESSION=2.