Realizar operaciones por lotes (XMLA)
Puede usar el comando Batch en XML for Analysis (XMLA) para ejecutar varios comandos XMLA mediante un único método EXECUTE de XMLA. Puede ejecutar varios comandos contenidos en el comando batch como una sola transacción o en transacciones individuales para cada comando, en serie o en paralelo. También puede especificar enlaces fuera de línea y otras propiedades en el comando Batch para procesar varios objetos Microsoft SQL Server Analysis Services línea.
Ejecutar comandos Batch transaccionales y no transaccionales
El comando Batch ejecuta comandos de una de estas dos maneras:
Transaccional
Si el atributo Transaction del comando Batch está establecido en true, el comando batch ejecuta todos los comandos contenidos en el comando Batch en un único lote transaccional .
Si se produce un error en un comando en un lote transaccional, Analysis Services revierte cualquier comando del comando de Batch que se ejecutó antes del comando que ha dado error y el comando batch finaliza inmediatamente. Los comandos del comando batch que aún no se han ejecutado no se ejecutan. Una vez que finaliza el comando batch, el comando batch notifica los errores que se produjeron para el comando con errores.
No transaccional
Si el atributo Transaction se establece en false, el comando Batch ejecuta cada comando contenido por el comando Batch en un lote transaccional independiente, un lote no transaccional . Si se produce un error en algún comando en un lote no transaccional, el comando batch continúa con la ejecución de comandos después del comando que no se pudo ejecutar. Después de que el comando batch intente ejecutar todos los comandos que contiene el comando batch , el comando batch notifica los errores que se han producido.
Todos los resultados devueltos por los comandos contenidos en un comando de Batch se devuelven en el mismo orden en el que los comandos se incluyen en el comando batch . Los resultados devueltos por un comando de Batch varían en función de si el comando batch es transaccional o no transaccional.
Nota
Si un comando batch contiene un comando que no devuelve resultados, como el comando Lock, y ese comando se ejecuta correctamente, el comando Batch devuelve un elemento raíz vacío dentro del elemento results. El elemento raíz vacío garantiza que cada comando incluido en un comando de Batch puede coincidir con el elemento raíz adecuado para los resultados de ese comando.
Devolver resultados de lotes transaccionales
Los resultados de los comandos que se ejecutan dentro de un lote transaccional no se devuelven hasta que se completa todo el comando de Batch . Los resultados no se devuelven después de ejecutar cada comando porque cualquier comando que produce un error dentro de un lote transaccional provocaría la revierte todo el comando batch y todos los comandos que contienen. Si todos los comandos se inician y se ejecutan correctamente, el elemento devuelto del elemento ExecuteResponse devuelto por el método Execute para el comando batch contiene un elemento results, que a su vez contiene un elemento raíz para cada comando ejecutado correctamente contenido en el comando batch. Si algún comando del comando batch no se puede iniciar o no se puede completar, el método Execute devuelve un error SOAP para el comando batch que contiene el error del comando que produjo un error.
Devolver resultados de lotes no transaccionales
Los resultados de los comandos que se ejecutan dentro de un lote no transaccional se devuelven en el orden en que los comandos están incluidos en el comando batch y a medida que los devuelve cada comando. Si no se puede iniciar correctamente ningún comando incluido en el comando batch, el método Execute devuelve un error SOAP que contiene un error para el comando batch. Si se inicia correctamente al menos un comando, el elemento devuelto del elemento ExecuteResponse devuelto por el método Execute para el comando batch contiene un elemento results, que a su vez contiene un elemento raíz para cada comando contenido en el comando batch. Si uno o varios comandos de un lote no transaccional no se pueden iniciar o no se pueden completar, el elemento raíz de ese comando con errores contiene un elemento de error que describe el error.
Nota
Siempre que se pueda iniciar al menos un comando en un lote no transaccional, se considera que el lote no transaccional se ha ejecutado correctamente, incluso si todos los comandos contenidos en el lote no transaccional devuelven un error en los resultados del comando Batch .
Utilizar la ejecución en serie y en paralelo
Puede usar el comando Batch para ejecutar comandos incluidos en serie o en paralelo. Cuando los comandos se ejecutan en serie, el siguiente comando incluido en el comando batch no se puede iniciar hasta que se complete el comando que se está ejecutando actualmente en el comando de Batch. Cuando los comandos se ejecutan en paralelo, el comando batch puede ejecutar varios comandos simultáneamente.
Para ejecutar comandos en paralelo, agregue los comandos que se ejecutarán en paralelo a la propiedad Parallel del comando Batch . Actualmente, Analysis Services ejecutar solo comandos process secuenciales contiguos en paralelo. Cualquier otro comando XMLA, como Create o Alter, incluido en la propiedad Parallel se ejecuta en serie.
Analysis Services ejecutar todos los comandos Process incluidos en la propiedad Parallel en paralelo, pero no puede garantizar que todos los comandos process incluidos se puedan ejecutar en paralelo. La instancia analiza cada comando Process y, si la instancia determina que el comando no se puede ejecutar en paralelo, el comando Process se ejecuta en serie.
Nota
Para ejecutar comandos en paralelo, el atributo Transaction del comando batch debe establecerse en true porque Analysis Services solo admite una transacción activa por conexión y los lotes no transaccionales ejecutan cada comando en una transacción independiente. Si incluye la propiedad Parallel en un lote no transaccional, se produce un error.
Limitar la ejecución en paralelo
Una Analysis Services intenta ejecutar tantos comandos Process en paralelo como sea posible, hasta los límites del equipo en el que se ejecuta la instancia. Puede limitar el número de comandos Process que se ejecutan simultáneamente estableciendo el atributo maxParallel de la propiedad Parallel en un valor que indica el número máximo de comandos Process que se pueden ejecutar en paralelo.
Por ejemplo, una propiedad Parallel contiene los siguientes comandos en la secuencia enumerada:
Creación
Process
Modificar
Process
Process
Process
Eliminar
Process
Process
El atributo maxParallel de esta propiedad Parallel se establece en 2. Por lo tanto, la instancia ejecuta la lista de comandos anteriores como se describe en la lista siguiente:
El comando 1 se ejecuta en serie porque el comando 1 es un comando Create y solo los comandos Process se pueden ejecutar en paralelo.
El comando 2 se ejecuta en serie una vez completado el comando 1.
El comando 3 se ejecuta en serie una vez completado el comando 2.
Los comandos 4 y 5 se ejecutan en paralelo una vez completado el comando 3. Aunque el comando 6 también es un comando Process , el comando 6 no se puede ejecutar en paralelo con los comandos 4 y 5 porque la propiedad maxParallel está establecida en 2.
El comando 6 se ejecuta en serie una vez completados los comandos 4 y 5.
El comando 7 se ejecuta en serie una vez completado el comando 6.
Los comandos 8 y 9 se ejecutan en paralelo una vez completado el comando 7.
Utilizar el comando Batch para procesar objetos
El comando Batch contiene varias propiedades y atributos opcionales que se incluyen específicamente para admitir el procesamiento de Analysis Services proyectos:
El atributo ProcessAffectedObjects del comando Batch indica si la instancia también debe procesar cualquier objeto que requiera reprocesamiento como resultado de un comando Process incluido en el comando Batch que procesa un objeto especificado.
La propiedad Bindings contiene una colección de enlaces fuera de línea que usan todos los comandos Process del comando Batch .
La propiedad DataSource contiene un enlace fuera de línea para un origen de datos utilizado por todos los comandos Process del comando Batch .
La propiedad DataSourceView contiene un enlace fuera de línea para una vista del origen de datos que usan todos los comandos Process del comando Batch .
La propiedad ErrorConfiguration especifica la manera en que el comando batch controla los errores detectados por todos los comandos process incluidos en el comando batch.
Importante
Un comando Process no puede incluir las propiedades Bindings, DataSource, DataSourceView o ErrorConfiguration si el comando Process está contenido en un comando de Batch . Si debe especificar estas propiedades para un comando Process , proporcione la información necesaria en las propiedades correspondientes del comando batch que contiene el comando Process.
Consulte también
Elemento Batch (XMLA)
Elemento Process (XMLA)
Procesar un modelo multidimensional (Analysis Services)
Desarrollar con XMLA en Analysis Services