Executando comandos em uma fonte de dados analíticos
Depois de estabelecer uma conexão com uma fonte de dados analíticas, você pode usar um AdomdCommand ' objeto para executar comandos e retornar os resultados dessa fonte de dados. 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 primeiro método usa o AdomdCommand Construtor, que pode usar um comando para ser executado na fonte de dados e um AdomdConnection objeto no qual executar o comando.
O segundo método usa o CreateCommand método do AdomdConnection objeto.
O texto do comando a ser executado pode ser consultado e modificado usando a CommandText propriedade. Os comandos criados por você não precisam retornar dados depois de executados.
Executando um comando
Depois de criar um AdomdCommand objeto, há vários Execute métodos que o comando pode usar para executar várias 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 AdomdDataReader objeto |
Retornar um CellSet objeto | ExecuteCellSet |
Executar comandos que não retornam linhas | ExecuteNonQuery |
Retornar um objeto XmlReader que contém os dados em um formato em conformidade com o XML for Analysis (XMLA) | 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 os 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=\"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();
}