Compartir a través de


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 incluidos en el comando Batch, ya sea como transacción única 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.

Ejecutar comandos Batch transaccionales y no transaccionales

El comando Batch ejecuta los comandos de una de las dos maneras siguientes:

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 contenidos en Batch que no se hayan ejecutado aún, no se ejecutan. Una vez finalizado el comando Batch, dicho comando Batch informa de los errores que se han producido en el comando que no se pudo ejecutar.

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 de cualquiera de los comandos de un lote no transaccional, el comando Batch sigue ejecutando los comandos posteriores a aquel que produjo el error. Después de que el comando Batch intente ejecutar todos los comandos contenidos en Batch, dicho comando Batch informa de los errores que se han producido.

Todos los resultados devueltos por los comandos contenidos en un comando Batch se devuelven en el mismo orden en el que éstos están incluidos en el comando Batch. Los resultados devueltos por un comando Batch varían en función de que el comando Batch sea 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 results. El elemento root vacío se asegura de que cada uno de los comandos incluidos en un comando Batch pueda coincidir con el elemento root adecuado para los resultados de ese comando.

Devolver resultados de lotes transaccionales

Los resultados de los comandos ejecutados en un lote transaccional no se devuelven hasta que no se haya completado todo el comando Batch. No se devuelven resultados después de ejecutarse cada comando, ya que si se produce un error en cualquiera de los comandos de un lote transaccional, se revertiría el comando Batch completo y todos los comandos incluidos en éste. Si todos los comandos se inician y se ejecutan correctamente, el elemento return del elemento ExecuteResponse devuelto por el Execute método para el Batch comando contiene un elemento results , que a su vez contiene un root elemento para cada comando ejecutado correctamente incluido en el Batch comando. Si cualquiera de los comandos incluidos en el comando Batch no se puede iniciar o completar, el método Execute devuelve un error de SOAP para el comando Batch que contiene el error del comando que no se ejecutó correctamente.

Devolver resultados de lotes no transaccionales

Los resultados de los comandos que se ejecutan en un lote no transaccional se devuelven en el orden en el que dichos comandos están incluidos dentro del comando Batch y según los devuelve cada comando. Si ninguno de los comandos contenidos en el comando Batch se puede iniciar correctamente, el método Execute devuelve un error de SOAP que contiene un error para el comando Batch. Si al menos uno de los comandos se inicia correctamente, el elemento return del elemento ExecuteResponse devuelto por el método Execute para el comando Batch contiene un elemento results que, a su vez, contiene un elemento root por cada comando incluido en el comando Batch. Si uno o varios comandos de un lote no transaccional no se pueden iniciar o no se completan, 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 uno de los comandos de un lote no transaccional, se considera que dicho lote se ha ejecutado correctamente, incluso aunque cada comando incluido en el lote no transaccional devuelva un error en los resultados del comando Batch.

Utilizar la ejecución en serie y en paralelo

Puede utilizar el comando Batch para ejecutar los comandos incluidos en serie o en paralelo. Cuando los comandos se ejecutan en serie, el comando siguiente incluido en el comando Batch no se puede iniciar hasta que no se complete el comando actualmente en ejecución en el comando 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 Batch comando. Actualmente, Analysis Services solo puede ejecutar comandos contiguos y secuenciales process 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 uno de los comandos Process y, si ésta determina que el comando no se puede ejecutar en paralelo, el comando Process 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 propiedad Parallel en un lote no transaccional, se produce un error.

Limitar 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. Para limitar el número de comandos Process que se ejecutan simultáneamente, establezca el atributo maxParallel de la propiedad Parallel en un valor que indique el número máximo de comandos Process que pueden ejecutarse en paralelo.

Por ejemplo, una propiedad Parallel contiene los siguientes comandos en el orden que se muestra:

  1. Create

  2. Process

  3. Alter

  4. Process

  5. Process

  6. Process

  7. Delete

  8. Process

  9. Process

El atributo maxParalle de esta propiedad Parallel se ha establecido 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 es un comando Create y solamente se pueden ejecutar en paralelo los comandos Process.

  • El comando 2 se ejecuta en serie una vez completado el comando 1.

  • El comando 3 se ejecuta en serie después de que se complete 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, éste no se puede ejecutar en paralelo con los comandos 4 y 5 porque la propiedad maxParallel se ha establecido 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 Batch comando contiene varias propiedades y atributos opcionales incluidos específicamente para admitir el procesamiento de varios proyectos de Analysis Services:

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

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

  • La propiedad DataSource contiene un enlace fuera de línea para un origen de datos usado 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 comando Process no puede incluir las propiedades Bindings, DataSource, DataSourceView o ErrorConfiguration si dicho comando Process está incluido en un comando 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)
Procesamiento de objetos del modelo multidimensional
Desarrollar con XMLA en Analysis Services