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:
Create
Process
Alter
Process
Process
Process
Delete
Process
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 comandosProcess
.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 propiedadmaxParallel
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 comandoBatch
indica si la instancia también debe procesar cualquier objeto que sea necesario volver a procesar como resultado de la inclusión de un comandoProcess
en el comandoBatch
que procesa un objeto especificado.La propiedad Bindings contiene una colección de enlaces fuera de línea usados por todos los
Process
comandos delBatch
comando.La propiedad DataSource contiene un enlace fuera de línea para un origen de datos usado por todos los
Process
comandos delBatch
comando.La propiedad DataSourceView contiene un enlace fuera de línea para una vista del origen de datos utilizada por todos los
Process
comandos delBatch
comando.La propiedad ErrorConfiguration especifica la forma en que el
Batch
comando controla los errores detectados por todos losProcess
comandos contenidos en elBatch
comando.Importante
Un comando
Process
no puede incluir las propiedadesBindings
,DataSource
,DataSourceView
oErrorConfiguration
si dicho comandoProcess
está incluido en un comandoBatch
. Si debe especificar estas propiedades para un comandoProcess
, proporcione la información necesaria en las propiedades correspondientes del comandoBatch
que contiene el comandoProcess
.
Consulte también
Elemento Batch (XMLA)
Elemento Process (XMLA)
Procesamiento de objetos del modelo multidimensional
Desarrollar con XMLA en Analysis Services