Condividi tramite


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:

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

ExecuteCellSet

Esecuzione di comandi che non restituiscono righe

ExecuteNonQuery

Restituzione di un oggetto XMLReader che contiene i dati in un formato conforme a XML for Analysis (XMLA)

ExecuteXmlReader

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();
        }