Esecuzione di comandi in un'origine dati analitici
Dopo avere stabilito una connessione a un'origine dati analitica, è possibile utilizzare un oggetto AdomdCommand per eseguire comandi e restituire risultati da tale origine dati. Tali comandi possono recuperare dati tramite istruzioni MDX (Multidimensional Expressions) o DMX (Data Mining Extensions) o tramite una sintassi limitata di SQL. È inoltre possibile utilizzare comandi ASSL (Analysis Services Scripting Language) per modificare il database sottostante.
Creazione di un comando
Prima di eseguire un comando, è necessario crearlo. Per creare un comando, utilizzare uno dei due elementi seguenti:
Costruttore AdomdCommand che può accettare un comando da eseguire nell'origine dati e un oggetto AdomdConnection su cui eseguire il comando.
Metodo CreateCommand dell'oggetto AdomdConnection.
Sul testo del comando da effettuare può essere eseguita una query e il testo stesso può essere modificato tramite la proprietà CommandText. I comandi creati non devono restituire dati dopo l'esecuzione.
Esecuzione di un comando
Dopo avere creato un oggetto AdomdCommand, sono disponibili numerosi metodi Execute che il comando può utilizzare per eseguire le diverse azioni. Nella tabella seguente vengono elencate alcune di tali azioni.
Azione |
Metodo da utilizzare |
---|---|
Restituzione di risultati come un flusso di dati |
ExecuteReader per restituire un oggetto AdomdDataReader |
Restituzione di un oggetto CellSet |
|
Esecuzione di comandi che non restituiscono righe |
|
Restituzione di un oggetto XMLReader che contiene i dati in un formato conforme a XML for Analysis (XMLA) |
Esempio di esecuzione di un comando
In questo esempio viene utilizzato AdomdCommand per eseguire un comando XMLA che elaborerà il cubo Adventure Works DW nel server locale senza restituire dati.
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();
}