Ejecutar comandos en un origen de datos analíticos
Después de establecer una conexión a un origen de datos analíticos, AdomdCommand puede usar un objeto para ejecutar comandos en y devolver resultados 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.
Creación de 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 AdomdCommand constructor , que puede tomar un comando para ejecutarse en el origen de datos y AdomdConnection un objeto en el que ejecutar el comando.
El segundo método usa el CreateCommand método del AdomdConnection objeto .
El texto del comando que se va a ejecutar se puede consultar y modificar mediante la CommandText propiedad . 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 Execute métodos que el comando puede usar para realizar varias acciones. En la tabla siguiente se enumeran algunas de estas acciones.
En | Use este método |
---|---|
Devolver resultados como un flujo de datos | ExecuteReader para devolver un AdomdDataReader objeto |
Devolver un CellSet objeto | ExecuteCellSet |
Ejecutar comandos que no devuelven filas | ExecuteNonQuery |
Devolver un objeto XMLReader que contiene los datos en un formato compatible XML for Analysis (XMLA) | ExecuteXmlReader |
Ejemplo de cómo ejecutar un comando
En este ejemplo se usa para AdomdCommand ejecutar un comando XMLA que procesará el cubo Adventure Works DW en el servidor local, sin devolver 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=\"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();
}