Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gespeicherte Prozeduren können auf dem Server oder von der Clientanwendung aufgerufen werden. In beiden Fällen werden gespeicherte Prozeduren immer auf dem Server ausgeführt, entweder der Kontext des Servers oder einer Datenbank. Es sind keine speziellen Berechtigungen zum Ausführen einer gespeicherten Prozedur erforderlich. Sobald eine gespeicherte Prozedur von einer Assembly zum Server- oder Datenbankkontext hinzugefügt wird, kann jeder Benutzer die gespeicherte Prozedur ausführen, solange die Rolle für den Benutzer die von der gespeicherten Prozedur ausgeführten Aktionen zulässt.
Das Aufrufen einer gespeicherten Prozedur in MDX erfolgt auf die gleiche Weise wie das Aufrufen einer systeminternen MDX-Funktion. Für eine gespeicherte Prozedur, die keine Parameter akzeptiert, werden der Name der Prozedur und ein leeres Paar Klammern verwendet, wie hier gezeigt:
MyStoredProcedure()
Wenn die gespeicherte Prozedur einen oder mehrere Parameter akzeptiert, werden die Parameter in der Reihenfolge durch Kommas getrennt angegeben. Im folgenden Beispiel wird eine gespeicherte Beispielprozedur mit drei Parametern veranschaulicht:
MyStoredProcedure("Parameter1", 2, 800)
Aufrufen gespeicherter Prozeduren in MDX-Abfragen
In allen MDX-Abfragen muss die gespeicherte Prozedur den syntaktisch korrekten Typ zurückgeben, der von einem MDX-Ausdruck benötigt wird. Wenn eine gespeicherte Prozedur nicht den richtigen Typ zurückgibt, tritt ein MDX-Fehler auf. Die folgenden Beispiele veranschaulichen gespeicherte Prozeduren, die einen Satz, ein Element und das Ergebnis eines mathematischen Vorgangs zurückgeben.
Zurückgeben eines Satzes
In den folgenden Beispielen wird eine gespeicherte Prozedur namens MySproc implementiert, die einen Satz zurückgibt. Im ersten Beispiel gibt MySproc den Satz direkt im SELECT-Ausdruck zurück. In den zweiten beiden Beispielen gibt MySproc den Satz als Argument für die Funktionen Crossjoin und DrilldownLevel zurück.
SELECT MySetProcedure(a,b,c) ON 0 FROM Sales
SELECT Crossjoin(MySetProcedure(a,b,c)) ON 0 FROM Sales
SELECT DrilldownLevel(MySetProcedure(a,b,c)) ON 0 FROM Sales
Zurückgeben eines Mitglieds
Das folgende Beispiel zeigt eine Funktion MySproc-Funktion, die ein Element zurückgibt:
SELECT Descendants(MySproc(a,b,c),3) ON 0 FROM Sales
Zurückgeben des Ergebnisses eines mathematischen Vorgangs
SELECT Country.Members on 0, MySproc(Measures.Sales) ON 1 FROM Sales
Aufrufen gespeicherter Prozeduren mit der Call-Anweisung
Gespeicherte Prozeduren können außerhalb des Kontexts einer MDX-Abfrage mithilfe der MDX-Anweisung Call aufgerufen werden.
Sie können diese Methode verwenden, um die Nebenwirkungen einer gespeicherten Abfrage oder für die Anwendung zu instanziieren, um die Ergebnisse einer gespeicherten Abfrage abzurufen. Eine häufige Verwendung der Call Anweisung wäre die Verwendung von Analysis Management Objects (AMO) zum Ausführen von Administrativen Funktionen, die kein Rückgabeergebnis aufweisen. Beispielsweise ruft der folgende Befehl eine gespeicherte Prozedur auf:
Call MyStoredProcedure(a,b,c)
Der einzige unterstützte Typ, der aus der gespeicherten Prozedur in einer Call Anweisung zurückgegeben wird, ist ein Rowset. Die Serialisierung für ein Rowset wird durch XML für die Analyse definiert. Wenn eine gespeicherte Prozedur in einer Call Anweisung einen anderen Typ zurückgibt, wird sie ignoriert und nicht in XML an die aufrufende Anwendung zurückgegeben. Weitere Informationen zu XML für Analysis-Rowsets finden Sie unter XML für Analysis Schema Rowsets.
Wenn eine gespeicherte Prozedur ein .NET-Rowset zurückgibt, konvertiert Analysis Services das Ergebnis auf dem Server in einen XML-Code für Analysis-Rowset. Das XML für Analysis-Rowset wird immer von einer gespeicherten Prozedur in der Call Funktion zurückgegeben. Wenn ein Dataset Features enthält, die nicht im XML für Analysis-Rowset ausgedrückt werden können, führt ein Fehler zu einem Fehler.
Prozeduren, die leere Werte zurückgeben (z. B. Unterroutinen in Visual Basic), können auch mit dem CALL-Schlüsselwort verwendet werden. Wenn Sie beispielsweise die Funktion MyVoidFunction() in einer MDX-Anweisung verwenden möchten, wird die folgende Syntax verwendet:
CALL(MyVoidFunction)
Siehe auch
Verwaltung von mehrdimensionalen Modellassemblys
Definieren gespeicherter Prozeduren