Share via


Ausführen von Befehlen für eine analytische Datenquelle

Wenn eine Verbindung zu einer analytischen Datenquelle hergestellt wurde, können Sie ein AdomdCommand-Objekt verwenden, um Befehle für diese Datenquelle auszuführen und Ergebnisse von der Datenquelle zurückzugeben. Diese Befehle können mithilfe von multidimensionalen Ausdrücken (Multidimensional Expressions, MDX), Data Mining-Erweiterungen (DMX) oder einer begrenzten SQL-Syntax Daten abrufen. Darüber hinaus können Sie ASSL-Befehle (Analysis Services Scripting Language) verwenden, um die zugrunde liegende Datenbank zu bearbeiten.

Erstellen eines Befehls

Vor dem Ausführen eines Befehls müssen Sie diesen erstellen. Sie können einen Befehl auf zwei verschiedene Arten erstellen:

  • Die erste Methode verwendet den AdomdCommand-Konstruktor, der das Ausführen eines Befehls für die Datenquelle ermöglicht sowie ein AdomdConnection-Objekt angibt, auf dem der Befehl ausgeführt wird.

  • Die zweite Methode verwendet die CreateCommand-Methode des AdomdConnection-Objekts.

Der Text des auszuführenden Befehls kann abgefragt und mit der CommandText-Eigenschaft bearbeitet werden. Die Befehle, die Sie erstellen, müssen keine Daten zurückgeben, nachdem sie ausgeführt wurden.

Ausführen eines Befehls

Wenn Sie ein AdomdCommand-Objekt erstellt haben, stehen mehrere Execute-Methoden zur Verfügung, die Ihr Befehl zum Ausführen verschiedener Aktionen verwenden kann. In der folgenden Tabelle werden einige dieser Aktionen aufgeführt.

Aktion

Verwenden Sie diese Methode

Zurückgeben von Ergebnissen als Datenstrom

ExecuteReader, um ein AdomdDataReader-Objekt zurückzugeben

Zurückgeben eines CellSet-Objekts

ExecuteCellSet

Ausführen von Befehlen, die keine Zeilen zurückgeben

ExecuteNonQuery

Zurückgeben eines XMLReader-Objekts, das Daten in einem XMLA-kompatiblen Format (XML for Analysis) enthält

ExecuteXmlReader

Beispiel für das Ausführen eines Befehls

In diesem Beispiel wird der Befehl AdomdCommand verwendet, um einen XMLA-Befehl auszuführen, der den Adventure Works DW-Cube auf dem lokalen Server verarbeitet, ohne Daten zurückzugeben.

        void ExecuteXMLAProcessCommand()
        {
            //Open a connection to the local server
            AdomdConnection conn = new AdomdConnection("Data Source=localhost");
            conn.Open();

            //Create a command, and assign it an XMLA command to process the cube.
            AdomdCommand cmd = conn.CreateCommand();
            cmd.CommandText = "<Process xmlns=\"https://schemas.microsoft.com/analysisservices/2003/engine\">\r\n" +
  @"<Object>
    <DatabaseID>Adventure Works DW Standard Edition</DatabaseID>
    <CubeID>Adventure Works DW</CubeID>
  </Object>
  <Type>ProcessFull</Type>
  <WriteBackTableCreation>UseExisting</WriteBackTableCreation>
</Process>";

            //Execute the command
            int result = cmd.ExecuteNonQuery();

            //Close the connection
            conn.Close();
        }