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. Mit der von Analysis Services-Personalisierungserweiterungen bereitgestellten Funktionalität kann Folgendes erreicht werden:
Dynamischer Entwurf und dynamische Bereitstellung Unmittelbar nach dem Entwurf und der Bereitstellung von Analysis Services-Personalisierungserweiterungen haben Benutzer beim Start der nächsten Benutzersitzung Zugriff auf die Objekte und die Funktionalität.
Schnittstellenunabhängigkeit Unabhängig von der Schnittstelle, mit der Sie die Analysis Services-Personalisierungserweiterungen erstellen, können Benutzer beliebige Schnittstellen zum Zugriff auf Objekte und Funktionalität verwenden.
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 Geben Sie Analysis Services-Personalisierungserweiterungen für andere Softwareentwickler frei, ohne dass detaillierte Angaben darüber notwendig sind, wo und wie auf diese erweiterte Funktionalität zugegriffen werden kann.
Analysis Services-Personalisierungserweiterungen sind vielseitig verwendbar. 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. Anschließend haben diese Benutzer unmittelbaren Zugriff auf das berechnete Element, sobald sie eine Verbindung mit dem Server herstellen. Dies gilt auch, wenn sie nicht die gleiche Schnittstelle wie die verwenden, mit der das berechnete Element erstellt wurde.
Analysis Services-Personalisierungserweiterungen sind eine einfache und elegante Änderung der vorhandenen Architektur der verwalteten Assembly, und sie werden im Analysis Services Microsoft.AnalysisServices.AdomdServer-Objektmodell, in der MDX-Syntax (Multidimensional Expressions) und in den Schemarowsets zur Verfügung gestellt.
Logische Architektur
Die Architektur für Analysis Services-Personalisierungserweiterungen beruht auf der Architektur der verwalteten Assembly und den folgenden vier Grundelementen:
Das benutzerdefinierte Attribut [PlugInAttribute].
Wenn der Dienst gestartet wird, lädt Analysis Services die erforderlichen Assemblys und stellt fest, welche Klassen das benutzerdefinierte Attribut PlugInAttribute aufweist.Hinweis .NET Framework definiert benutzerdefinierte Attribute als Möglichkeit, den 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 PlugInAttribute ruft Analysis Services die Standardkonstruktoren dieser Klassen 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.
Zusätzlich zum Erstellen eines kleinen Informationscaches über das Erstellen und Verwalten von Personalisierungserweiterungen abonniert der Klassenkonstruktor typischerweise die Ereignisse SessionOpened und 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 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. Nach Ende der Benutzersitzung entfernt Analysis Services die dynamisch erstellten Objekte und schließt die Ausführungsumgebung.Ereignisse
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 an einem Server anmeldet, erstellt Analysis Services eine Sitzung und löst das SessionOpened-Ereignis aus. Wenn ein Client die Sitzung auf dem Server beendet, löst Analysis Services das SessionClosing-Ereignis aus.
Dem Verbindungsobjekt werden Cubeereignisse zugeordnet. Das Herstellen einer Verbindung mit einem Cube löst das CubeOpened-Ereignis aus. Das Beenden der Verbindung mit einem Cube, durch Schließen des Cubes oder durch Wechsel zu einem anderen Cube, löst ein CubeClosing-Ereignis aus.
Nachweisbarkeit und Fehlerbehandlung
Alle Aktivitäten sind mit SQL Server Profiler nachweisbar. 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 PlugInAttribute kann Ihren benutzerdefinierten Assemblys hinzugefügt werden, um die Analysis Services-Personalisierungserweiterungsklassen zu identifizieren.
Änderungen gegenüber dem AdomdServer-Objektmodell
Die folgenden Objekte im Microsoft.AnalysisServices.AdomdServer-Objektmodell wurden verbessert oder dem Modell hinzugefügt.
Neue AdomdConnection-Klasse
Die AdomdConnection-Klasse ist neu und macht mehrere Personalisierungserweiterungen durch sowohl Eigenschaften als auch Ereignisse verfügbar.
Eigenschaften
SessionID, ein schreibgeschützter Zeichenfolgenwert, der die Sitzungs-ID der aktuellen Verbindung darstellt.
ClientCulture, ein schreibgeschützter Verweis auf die der aktuellen Sitzung zugeordnete Clientkultur.
User, ein schreibgeschützter Verweis auf die dem aktuellen Benutzer zugeordnete Identitätsschnittstelle.
Ereignisse
Neue Eigenschaften in der Kontextklasse
Die Context-Klasse verfügt über zwei neue Eigenschaften:
Server, ein schreibgeschützter Verweis auf das neue Serverobjekt.
CurrentConnection, ein schreibgeschützter Verweis auf das neue AdomdConnection-Objekt.
Neue Serverklasse
Die Server-Klasse ist neu und macht mehrere Personalisierungserweiterungen durch sowohl Klasseneigenschaften als auch Klassenereignisse verfügbar.
Eigenschaften
Name, ein schreibgeschützter Zeichenfolgenwert, der den Servernamen darstellt.
Culture, ein schreibgeschützter Verweis auf die dem Server zugeordnete globale Kultur.
Ereignisse
AdomdCommand-Klasse
Die AdomdCommand-Klasse unterstützt jetzt folgende 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 dieser Satz nur zur Erstellungszeit ausgewertet wird. Dynamisch bedeutet, dass der Satz bei jeder Verwendung in einer Abfrage ausgewertet 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
MDSCHEMA_MEMBERS wird eine scope-Spalte hinzugefügt. Die Bereichswerte lauten wie folgt: MDMEMBER_SCOPE_GLOBAL=1, MDMEMBER_SCOPE_SESSION=2.
MDSCHEMA_SETS wird eine 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.