Compartilhar via


Executando comandos em uma fonte de dados analítica

Depois de estabelecer uma conexão com uma fonte de dados analítica, você poderá usar um objeto AdomdCommand para executar comandos nessa fonte de dados e retornar resultados dela. Esses comandos podem recuperar dados usando MDX (Multidimensional Expressions), DMX (Data Mining Extensions) ou até mesmo uma sintaxe limitada de SQL. Além disso, você poderá usar comandos ASSL (Analysis Services Scripting Language) para modificar o banco de dados subjacente.

Criando um comando

Antes de executar um comando, você deverá criá-lo. Você pode criar um comando usando um destes métodos:

O texto do comando a ser executado pode ser consultado e modificado por meio da propriedade CommandText. Os comandos criados por você não precisam retornar dados depois de executados.

Executando um comando

Depois que criar um objeto AdomdCommand, existem vários métodos Execute que o seu comando poderá usar para executar diversas ações. A tabela a seguir lista algumas dessas ações.

Para

Use este método

Retornar resultados como um fluxo de dados

ExecuteReader para retornar um objeto AdomdDataReader

Retornar um objeto CellSet

ExecuteCellSet

Executar comandos que não retornam linhas

ExecuteNonQuery

Retorne um objeto XMLReader que contenha os dados em um formato compatível com XMLA (XML for Analysis)

ExecuteXmlReader

Exemplo de execução de um comando

Este exemplo usa o AdomdCommand para executar um comando XMLA que processará o cubo Adventure Works DW no servidor local, sem retornar dados.

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