Freigeben über


Ausführen von Befehlen für eine analytische Datenquelle

Nachdem Sie eine Verbindung mit einer analytischen Datenquelle hergestellt haben, können Sie ein AdomdCommand Objekt verwenden, um Befehle für diese Datenquelle auszuführen und Ergebnisse aus dieser Datenquelle zurückzugeben. Diese Befehle können Daten mithilfe von multidimensionalen Ausdrücken (MDX), Data Mining Extensions (DMX) oder sogar mit einer begrenzten Syntax von SQL abrufen. Darüber hinaus können Sie die zugrunde liegende Datenbank mithilfe von ASSL-Befehlen (Analysis Services Scripting Language) ändern.

Erstellen eines Befehls

Bevor Sie einen Befehl ausführen, müssen Sie ihn erstellen. Sie können einen Befehl mit einer von zwei Methoden erstellen:

Der Text des auszuführenden Befehls kann mithilfe der CommandText Eigenschaft abgefragt und geändert werden. Die von Ihnen erstellten Befehle müssen nach der Ausführung keine Daten zurückgeben.

Ausführen eines Befehls

Nachdem Sie ein AdomdCommand Objekt erstellt haben, gibt es mehrere Execute Methoden, mit denen Der Befehl verschiedene Aktionen ausführen kann. In der folgenden Tabelle sind einige dieser Aktionen aufgeführt.

Bis Methode
Zurückgeben von Ergebnissen als Datenstrom 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 die Daten in einem XML-für-Analyse-kompatiblen Format (XMLA) enthält ExecuteXmlReader

Beispiel für das Ausführen eines Befehls

In diesem Beispiel wird ein AdomdCommand XMLA-Befehl ausgeführt, 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=\"http://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();
        }