Ejecutar comandos en un origen de datos analíticos
Después de establecer una conexión a un origen de datos analíticos, puede usar un objeto AdomdCommand para ejecutar con comandos y resultados devueltos de ese origen de datos. Estos comandos pueden recuperar datos mediante expresiones multidimensionales (MDX), extensiones de minería de datos (DMX), o incluso una sintaxis limitada de SQL. Además, puede usar los comandos ASSL (Analysis Services Scripting Language) para modificar la base de datos subyacente.
Crear un comando
Antes de ejecutar un comando, debe crearlo. Puede crear un comando mediante uno de los dos métodos siguientes:
El primer método usa el constructor AdomdCommand, que puede tomar un comando para ejecutarlo en el origen de datos y un objeto AdomdConnection para ejecutar el comando.
El segundo método usa el método CreateCommand del objeto AdomdConnection.
El texto del comando para ejecutar se puede consultar y modificar mediante la propiedad CommandText. Los comandos que crea no tienen que devolver los datos después de ejecutarse.
Ejecutar un comando
Después de crear un objeto AdomdCommand, hay varios métodos Execute que el comando puede usar para realizar varias acciones. En la tabla siguiente se enumeran algunas de estas acciones.
Para |
Use este método |
---|---|
Devolver resultados como un flujo de datos |
ExecuteReader para devolver un objeto AdomdDataReader |
Devolver un objeto CellSet |
|
Ejecutar comandos que no devuelven filas |
|
Devolver un objeto XMLReader que contiene los datos en un formato compatible de XML for Analysis (XMLA) |
Ejemplo de cómo ejecutar un comando
En este ejemplo se usa AdomdCommand para ejecutar un comando XMLA que procesará el cubo Adventure Works DW en el servidor local, sin devolver los datos.
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();
}