Compartir a través de


Realización de 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 xmlA. Puede ejecutar varios comandos contenidos en el Batch comando 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 Batch comando para procesar varios objetos de Microsoft SQL Server Analysis Services.

Ejecución de comandos por lotes transaccionales y no transaccionales

El Batch comando ejecuta comandos de una de estas dos maneras:

Transaccional
Si el Transaction atributo del Batch comando se establece en true, el Batch comando ejecuta todos los comandos contenidos por el Batch comando en un único lote transaccional .

Si se produce un error en un lote transaccional, Analysis Services revierte cualquier comando del Batch comando que se ejecutó antes del comando que produjo un error y el Batch comando finaliza inmediatamente. Los comandos del Batch comando que aún no se han ejecutado no se ejecutan. Una vez finalizado el Batch comando, el Batch comando notifica los errores que se produjeron para el comando con errores.

No transaccional
Si el Transaction atributo se establece en false, el Batch comando ejecuta cada comando contenido por el Batch comando en un lote no transaccional independiente. Si se produce un error en un lote no transaccional, el Batch comando continúa ejecutando comandos después del comando que produjo un error. Después de que el Batch comando intente ejecutar todos los comandos que contiene el Batch comando, el Batch comando notifica los errores que se produjeron.

Todos los resultados devueltos por los comandos contenidos en un Batch comando se devuelven en el mismo orden en el que los comandos se encuentran en el Batch comando. Los resultados devueltos por un Batch comando varían en función de si el Batch comando es transaccional o no transaccional.

Nota:

Si un Batch comando contiene un comando que no devuelve la salida, como el comando Lock y ese comando se ejecuta correctamente, el Batch comando devuelve un elemento raíz vacío dentro del elemento de resultados. El elemento vacío root garantiza que cada comando contenido en un Batch comando pueda coincidir con el elemento adecuado root para los resultados de ese comando.

Devolver resultados de los resultados del lote transaccional

Los resultados de los comandos que se ejecutan dentro de un lote transaccional no se devuelven hasta que se completa todo Batch el comando. Los resultados no se devuelven después de que se ejecute cada comando porque cualquier comando que produce un error dentro de un lote transaccional provocaría que todo el Batch comando y todos los comandos contenedoras se revertiran. Si todos los comandos se inician y ejecutan correctamente, el elemento return del elemento ExecuteResponse devuelto por el Execute método para el Batch comando contiene un elemento de resultados , que a su vez contiene un root elemento para cada comando ejecutado correctamente incluido en el Batch comando. Si no se puede iniciar ningún comando del Batch comando o no se puede completar, el Execute método devuelve un error SOAP para el Batch comando que contiene el error del comando que produjo un error.

Devolver resultados de los resultados del lote no transaccional

Los resultados de los comandos se ejecutan dentro de un lote no transaccional se devuelven en el orden en que los comandos se encuentran dentro del Batch comando y a medida que devuelven cada comando. Si no se puede iniciar correctamente ningún comando incluido en el Batch comando, el Execute método devuelve un error SOAP que contiene un error para el Batch comando. Si al menos un comando se inicia correctamente, el return elemento del ExecuteResponse elemento devuelto por el Execute método para el Batch comando contiene un results elemento, que a su vez contiene un root elemento para cada comando contenido en el Batch comando. Si no se puede iniciar uno o varios comandos de un lote no transaccional o no se puede completar, el root elemento para ese comando con error contiene un elemento de error que describe el error.

Nota:

Siempre que se pueda iniciar al menos un comando en un lote no transaccional, el lote no transaccional se considera que se ha ejecutado correctamente, aunque todos los comandos contenidos en el lote no transaccional devuelvan un error en los resultados del Batch comando.

Uso de la ejecución serie y paralela

Puede usar el Batch comando para ejecutar comandos incluidos en serie o en paralelo. Cuando los comandos se ejecutan en serie, el siguiente comando incluido en el Batch comando no puede iniciarse hasta que se complete el comando que se está ejecutando actualmente en el Batch comando. Cuando los comandos se ejecutan en paralelo, el Batch comando 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 Batch comando. Actualmente, Analysis Services solo puede ejecutar comandos de proceso secuenciales contiguos en paralelo. Cualquier otro comando XMLA, como Create o Alter, incluido en la Parallel propiedad se ejecuta en serie.

Analysis Services intenta ejecutar todos los Process comandos incluidos en la Parallel propiedad en paralelo, pero no puede garantizar que todos los comandos incluidos Process se puedan ejecutar en paralelo. La instancia analiza cada Process comando y, si la instancia determina que el comando no se puede ejecutar en paralelo, el Process comando se ejecuta en serie.

Nota:

Para ejecutar comandos en paralelo, el Transaction atributo del Batch comando 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 Parallel propiedad en un lote no transaccional, se produce un error.

Limitación de la ejecución en paralelo

Una instancia de Analysis Services intenta ejecutar tantos Process comandos 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 que se ejecutan simultáneamente estableciendo Process el maxParallel atributo de la Parallel propiedad en un valor que indica el número máximo de Process comandos que se pueden ejecutar en paralelo.

Por ejemplo, una Parallel propiedad contiene los siguientes comandos en la secuencia enumerada:

  1. Create

  2. Process

  3. Alter

  4. Process

  5. Process

  6. Process

  7. Delete

  8. Process

  9. Process

El maxParalleatributo l de esta Parallel propiedad se establece en 2. Por lo tanto, la instancia ejecuta las listas anteriores de comandos como se describe en la lista siguiente:

  • El comando 1 se ejecuta en serie porque el comando 1 es un Create comando y solo Process se pueden ejecutar comandos en paralelo.

  • El comando 2 se ejecuta en serie después de que se complete 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 después de que se complete el comando 3. Aunque el comando 6 también es un Process comando, el comando 6 no se puede ejecutar en paralelo con los comandos 4 y 5 porque la maxParallel propiedad está establecida en 2.

  • El comando 6 se ejecuta en serie después de que se completen 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 después de que se complete el comando 7.

Uso del comando Batch para procesar objetos

El Batch comando contiene varias propiedades y atributos opcionales incluidos específicamente para admitir el procesamiento de varios proyectos de Analysis Services:

  • El ProcessAffectedObjects atributo del Batch comando indica si la instancia también debe procesar cualquier objeto que requiera volver a procesar como resultado de un Process comando incluido en el Batch comando que procesa un objeto especificado.

  • La propiedad Bindings contiene una colección de enlaces fuera de línea utilizados por todos los Process comandos del Batch comando.

  • La propiedad DataSource contiene un enlace fuera de línea para un origen de datos utilizado por todos los Process comandos del Batch comando.

  • La propiedad DataSourceView contiene un enlace fuera de línea para una vista del origen de datos utilizada por todos los Process comandos del Batch comando.

  • La propiedad ErrorConfiguration especifica la forma en que el Batch comando controla los errores detectados por todos los Process comandos contenidos en el Batch comando.

    Importante

    Un Process comando no puede incluir las Bindingspropiedades , DataSource, DataSourceViewo ErrorConfiguration , si el Process comando está contenido en un Batch comando. Si debe especificar estas propiedades para un Process comando, proporcione la información necesaria en las propiedades correspondientes del Batch comando que contiene el Process comando.

Véase también

Elemento Batch (XMLA)
Elemento Process (XMLA)
Procesamiento de objetos de modelo multidimensional
Desarrollo con XMLA en Analysis Services