Personalisierungserweiterungen für Analysis Services
SQL Server Analysis Services-Personalisierungserweiterungen sind die Grundlage für das Konzept der Implementierung einer Plug-In-Architektur. In einer Plug-In-Architektur können Sie neue Cubeobjekte und -funktionalitäten dynamisch entwickeln und problemlos für andere Entwickler freigeben. Daher stellen Analysis Services-Personalisierungserweiterungen die Funktionalität bereit, die Folgendes ermöglicht:
Dynamischer Entwurf und Bereitstellung Unmittelbar nach dem Entwerfen und Bereitstellen von Analysis Services-Personalisierungserweiterungen haben Benutzer zu Beginn der nächsten Benutzersitzung Zugriff auf die Objekte und Funktionen.
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 permanenten Objekte in der vorhandenen Infrastruktur und erfordern keine erneute Verarbeitung des Cubes. Sie werden zu dem Zeitpunkt für den Benutzer erstellt und verfügbar gemacht, an dem der Benutzer eine Verbindung mit der Datenbank herstellt, 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 diese erweiterte Funktionalität gefunden werden kann.
Analysis Services-Personalisierungserweiterungen haben viele Verwendungsmöglichkeiten. Zum Beispiel weist das Unternehmen Verkäufe auf, die verschiedene Währungen einschließen. Sie erstellen ein berechnetes Element, das die zusammengefassten Verkäufe in der lokalen Währung der Person zurückgibt, die auf den Cube zugreift. Sie erstellen dieses Element als Personalisierungserweiterung. Sie geben dann dieses berechnete Element für eine Gruppe von Benutzern frei. Nach der Freigabe haben diese Benutzer sofortigen Zugriff auf das berechnete Element, sobald sie eine Verbindung mit dem Server herstellen. Sie haben auch dann Zugriff, wenn sie nicht die gleiche Schnittstelle verwenden, wie die, mit der das berechnete Element erstellt wurde.
Analysis Services-Personalisierungserweiterungen sind eine einfache und elegante Änderung der vorhandenen Architektur der verwalteten Assembly und werden im gesamten Analysis Services-Objektmodell Microsoft.AnalysisServices.AdomdServer , der MDX-Syntax (Multidimensional Expressions) und schemarowsets verfügbar gemacht.
Logische Architektur
Die Architektur für Analysis Services-Personalisierungserweiterungen basiert auf der Architektur der verwalteten Assembly 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 über das benutzerdefinierte Attribut Microsoft.AnalysisServices.AdomdServer.PlugInAttribute verfügen.
Hinweis
Die .NET Framework definiert benutzerdefinierte Attribute, um Ihren Code zu beschreiben und das Laufzeitverhalten zu beeinflussen. Weitere Informationen finden Sie im Thema "Übersicht über Attribute" im .NET Framework Entwicklerhandbuch 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 bietet einen gebräuchlichen Ort, von dem aus neue Objekte erstellt werden können und der von Benutzeraktivitäten unabhängig ist.
Neben dem 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 kein Abonnement für diese Ereignisse eingerichtet wird, werden die Klassen möglicherweise ungewollt vom Garbage Collector der Common Language Runtime (CLR) für den Cleanup markiert.
Sitzungskontext
Für die Objekte, die auf Personalisierungserweiterungen basieren, erstellt Analysis Services während der Clientsitzung eine Ausführungsumgebung und erstellt die meisten dieser Objekte dynamisch in dieser Umgebung. Wie alle anderen CLR-Assemblys 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.
Events
Die Objekterstellung wird von den Sitzungsereignissen On-Cube-OpenedCubeOpened
und On-Cube-ClosingCubeClosing
ausgelöst.
Die Kommunikation zwischen dem Client und dem Server kommt nur durch bestimmte Ereignisse zustande. Durch diese Ereignisse wird der Client auf die Situationen aufmerksam gemacht, die zur Erstellung der Clientobjekte führen. Die Umgebung des Clients wird dynamisch mit zwei Sätzen von Ereignissen erstellt: Sitzungsereignisse und Cubeereignisse.
Dem Serverobjekt werden Sitzungsereignisse zugeordnet. Wenn sich ein Client bei 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 Microsoft.AnalysisServices.AdomdServer.Server.SessionClosing-Ereignis aus .
Dem Verbindungsobjekt werden Cubeereignisse zugeordnet. Beim 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 Cube schließen oder in einen anderen Cube wechseln, wird ein Microsoft.AnalysisServices.AdomdServer.AdomdConnection.CubeClosing-Ereignis ausgelöst.
Nachweisbarkeit und Fehlerbehandlung
Alle Aktivitäten können mithilfe von SQL Server Profiler nachverfolgt werden. Unbehandelte Fehler werden dem Windows-Ereignisprotokoll berichtet.
Die gesamte Objekterstellung und -verwaltung ist von dieser Architektur unabhängig, und einzig die Entwickler dieser Objekte tragen die Verantwortung dafür.
Infrastrukturgrundlagen
Analysis Services-Personalisierungserweiterungen basieren auf vorhandenen Komponenten. Nachfolgend finden Sie eine Zusammenfassung der Erweiterungen und Verbesserungen, die von der Funktionalität der Personalisierungserweiterungen bereitgestellt werden.
Assemblys
Das benutzerdefinierte Attribut Microsoft.AnalysisServices.AdomdServer.PlugInAttribute kann Ihren benutzerdefinierten Assemblys hinzugefügt werden, um Analysis Services-Personalisierungserweiterungsklassen zu identifizieren.
Änderungen gegenüber dem AdomdServer-Objektmodell
Die folgenden Objekte im Microsoft.AnalysisServices.AdomdServer-Objektmodell wurden erweitert oder dem Modell hinzugefügt.
Neue AdomdConnection-Klasse
Die Microsoft.AnalysisServices.AdomdServer.AdomdConnection-Klasse ist neu und macht mehrere Personalisierungserweiterungen über Eigenschaften und Ereignisse verfügbar.
Eigenschaften
Microsoft.AnalysisServices.AdomdServer.AdomdConnection.SessionID*, ein schreibgeschützter Zeichenfolgenwert, der die Sitzungs-ID der aktuellen Verbindung darstellt.
Microsoft.AnalysisServices.AdomdServer.AdomdConnection.ClientCulture*, ein schreibgeschützter Verweis auf die Clientkultur, die der aktuellen Sitzung zugeordnet ist.
Microsoft.AnalysisServices.AdomdServer.AdomdConnection.User*, ein schreibgeschützter Verweis auf die Identitätsschnittstelle, die den aktuellen Benutzer darstellt.
Ereignisse
Microsoft.AnalysisServices.AdomdServer.AdomdConnection.CubeOpened
Microsoft.AnalysisServices.AdomdServer.AdomdConnection.CubeClosing
Neue Eigenschaften in der Kontextklasse
Die Microsoft.AnalysisServices.AdomdServer.Context-Klasse verfügt über zwei neue Eigenschaften:
Microsoft.AnalysisServices.AdomdServer.Context.Server*, ein schreibgeschützter Verweis auf das neue Serverobjekt.
Microsoft.AnalysisServices.AdomdServer.Context.CurrentConnection*, ein schreibgeschützter Verweis auf das neue Microsoft.AnalysisServices.AdomdServer.AdomdConnection-Objekt .
Neue Serverklasse
Die Microsoft.AnalysisServices.AdomdServer.Server-Klasse ist neu und macht mehrere Personalisierungserweiterungen über Klasseneigenschaften und Ereignisse verfügbar.
Eigenschaften
Microsoft.AnalysisServices.AdomdServer.Server.Name*, einem schreibgeschützten Zeichenfolgenwert, der den Servernamen darstellt.
Microsoft.AnalysisServices.AdomdServer.Server.Culture*, Ein schreibgeschützter Verweis auf die dem Server zugeordnete globale Kultur.
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 um die caption
-Eigenschaft, die display_folder
-Eigenschaft und die associated_measure_group
-Eigenschaft erweitert.
Der Befehl UPDATE MEMBER wurde hinzugefügt, um die Neuerstellung eines Elements zu verhindern, wenn ein Update erforderlich ist, aus dem ein Verlust der Lösungsreihenfolge für die Berechnungen erfolgt. Updates können weder den Bereich eines berechneten Elements ändern, noch das berechnete Element zu einem anderen übergeordneten Element verschieben oder eine andere solveorder
festlegen.
Der Befehl CREATE SET wird um die caption
-Eigenschaft, die display_folder
-Eigenschaft und das neue Schlüsselwort STATIC | DYNAMIC
erweitert. Statisch bedeutet, dass der Satz nur zur Erstellungszeit ausgewertet wird. Dynamisch bedeutet, dass die Gruppe jedes Mal ausgewertet wird, wenn der Satz in einer Abfrage verwendet wird. Der Standardwert ist STATIC
, wenn ein Schlüsselwort ausgelassen wird.
Die Befehle CREATE KPI und DROP KPI werden der MDX-Syntax hinzugefügt. KPIs können dynamisch aus einem beliebigen MDX-Skript erstellt werden.
Schemarowset-Erweiterungen
In MDSCHEMA_MEMBERS Bereichsspalte hinzugefügt wird. Die Bereichswerte lauten wie folgt: MDMEMBER_SCOPE_GLOBAL=1, MDMEMBER_SCOPE_SESSION=2.
Auf MDSCHEMA_SETS wird set_evaluation_context Spalte hinzugefügt. Die Satzauswertungs-Kontextwerte lauten wie folgt: MDSET_RESOLUTION_STATIC = 1, MDSET_RESOLUTION_DYNAMIC = 2.
MDSCHEMA_KPIS wird eine scope-Spalte hinzugefügt. Die Bereichswerte lauten wie folgt: MDKPI_SCOPE_GLOBAL=1, MDKPI_SCOPE_SESSION=2.