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 |
|
Ausführen von Befehlen, die keine Zeilen zurückgeben |
|
Zurückgeben eines XMLReader-Objekts, das Daten in einem XMLA-kompatiblen Format (XML for Analysis) enthält |
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();
}