Executando comandos em uma fonte de dados analíticos
Depois de estabelecer uma conexão com uma fonte de dados analíticos, 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 primeiro método usa o construtor AdomdCommand, que pode fazer com que um comando seja executado na fonte de dados, e usa um objeto AdomdConnection no qual o comando será executado.
O segundo método usa o método CreateCommand do objeto AdomdConnection.
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 |
|
Executar comandos que não retornam linhas |
|
Retorne um objeto XMLReader que contenha os dados em um formato compatível com XMLA (XML for Analysis) |
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();
}