Executando operações em lote (XMLA)
Você pode usar o comando Batch em XMLA (XML for Analysis) para executar vários comandos XMLA usando um único método XMLA Execute . Você pode executar vários comandos contidos no comando Batch
como uma única transação ou em transações individuais para cada comando, em série ou em paralelo. Você também pode especificar associações fora de linha e outras propriedades no Batch
comando para processar vários objetos do Microsoft SQL Server Analysis Services.
Executando comandos em lote transacionais e não transacionais
O comando Batch
executa comandos de uma destas maneiras:
Transacional.
Se o Transaction
atributo do Batch
comando for definido como true, o Batch
comando executar comandos todos os comandos contidos pelo Batch
comando em um lote transacional de uma única transação .
Se algum comando falhar em um lote transacional, o Batch
Analysis Services reverterá qualquer comando no comando executado antes do comando que falhou e o Batch
comando terminará imediatamente. Qualquer comando de Batch
que ainda não tiver sido executado não o será. Após o término do comando Batch
, Batch
informará qualquer erro ocorrido no comando que falhou.
Não transacional
Se o Transaction
atributo for definido como false, o Batch
comando executará cada comando contido pelo Batch
comando em um lote não transacional separado. Se qualquer comando falhar em um lote não transacional, Batch
comando continuará a executar comandos após o que falhou. Depois que o comando Batch
tenta executar todos os comandos que contidos por Batch
, o comando Batch
informará qualquer erro ocorrido.
Todos os resultados retornados por comandos contidos em um comando Batch
são retornados na mesma ordem em que os comandos estão contidos em Batch
. Os resultados retornados por um comando Batch
variam caso Batch
seja transacional ou não transacional.
Observação
Se um Batch
comando contiver um comando que não retorna a saída, como o comando Lock , e esse comando for executado com êxito, o Batch
comando retornará um elemento raiz vazio dentro do elemento de resultados. O elemento root
vazio garante que cada comando contido em um Batch
possa ser correspondido ao elemento root
apropriado para os resultados desse comando.
Retornando resultados a partir de resultados em lote transacionais
Os resultados de comandos executados em um lote transacional não são retornados até que todo o comando Batch
é concluído. Os resultados não são retornados após a execução de cada comando porque qualquer comando que falhar em um lote transacional poderia fazer com que todo o comando Batch
e os comandos nele contidos fossem revertidos. Se todos os comandos forem iniciados e executados com êxito, o elemento return do elemento ExecuteResponse retornado pelo Execute
método para o Batch
comando conterá um elemento de resultados , que por sua vez contém um root
elemento para cada comando de execução com êxito contido no Batch
comando . Se qualquer comando de Batch
não puder ser iniciado ou se a sua conclusão falhar, o método Execute
retornará uma falha SOAP para comando Batch
que contém o erro do comando que falhou.
Retornando resultados a partir de resultados em lote não transacionais
Os resultados de comandos executados em um lote não transacional são retornados na ordem em que estão contidos em Batch
e como são retornados por cada comando. Se nenhum comando contido em Batch
puder ser iniciado com êxito, o método Execute
retornará uma falha SOAP com um erro para o comando Batch
. Se pelo menos um comando for iniciado com êxito, o elemento return
do elemento ExecuteResponse
retornado pelo método Execute
para o comando Batch
conterá um elemento results
que, por sua vez, conterá um elemento root
para cada comando contido em Batch
. Se um ou mais comandos em um lote não transacional não puderem ser iniciados ou não forem concluídos, o root
elemento desse comando com falha conterá um elemento de erro que descreve o erro.
Observação
Desde que pelo menos um comando de um lote não transacional possa ser iniciado, o lote não transacional terá sua execução considerada como bem-sucedida, mesmo que todos os comandos contidos no lote não transacional retornem um erro nos resultados do comando Batch
.
Usando a execução em série ou em paralelo
Você pode usar o comando Batch
para executar comandos incluídos em série ou em paralelo. Quando os comandos são executados em série, o próximo comando incluído em Batch
não poderá ser iniciado até que o comando em execução em Batch
seja concluído. Quando os comandos são executados em paralelo, vários deles poderão ser executados simultaneamente por Batch
.
Para executar comandos em paralelo, adicione os comandos a serem executados em paralelo à propriedade Parallel do Batch
comando. Atualmente, o Analysis Services só pode executar comandos contíguos e sequenciais do Processo em paralelo. Qualquer outro comando XMLA, como Criar ou Alterar, incluído na Parallel
propriedade, é executado em série.
O Analysis Services tenta executar todos os Process
comandos incluídos na Parallel
propriedade em paralelo, mas não pode garantir que todos os comandos incluídos Process
possam ser executados em paralelo. A instância analisa cada comando Process
e, se a instância determinar que o comando não pode ser executado em paralelo, o comando Process
será executado em série.
Observação
Para executar comandos em paralelo, o Transaction
atributo do Batch
comando deve ser definido como true porque o Analysis Services dá suporte a apenas uma transação ativa por conexão e lotes não transacionais executam cada comando em uma transação separada. Se você incluir a propriedade Parallel
em um lote não transacional, ocorrerá um erro.
Limitando a execução em paralelo
Uma instância do Analysis Services tenta executar o máximo Process
de comandos em paralelo possível, até os limites do computador no qual a instância é executada. Você pode limitar o número de comandos Process
executados simultaneamente por meio da configuração do atributo maxParallel
da propriedade Parallel
como um valor indicando o número máximo de comandos Process
que podem ser executados em paralelo.
Por exemplo, uma propriedade Parallel
contém os comandos a seguir na sequência listada:
Create
Process
Alter
Process
Process
Process
Delete
Process
Process
O atributo maxParalle
l dessa propriedade Parallel
é definido como 2. Dessa forma, a instância executa as listas de comandos anteriores como descrito na lista seguinte:
O comando 1 é executado em série porque é um comando
Create
e somente os comandosProcess
podem ser executados em paralelo.O Comando 2 é executado serialmente após a conclusão do comando 1.
O Comando 3 é executado em série após a conclusão do comando 2.
Os comandos 4 e 5 são executados em paralelo após a conclusão do comando 3. Embora o comando 6 também seja um comando
Process
, não poderá ser executado em paralelo com os comandos 4 e 5 porque a propriedademaxParallel
foi definida como 2.O comando 6 é executado em série após a conclusão dos comandos 4 e 5.
O comando 7 é executado em série após a conclusão do comando 6.
Os comandos 8 e 9 são executados em paralelo após a conclusão do comando 7.
Usando o comando em lotes para processar objetos
O Batch
comando contém várias propriedades opcionais e atributos incluídos especificamente para dar suporte ao processamento de vários projetos do Analysis Services:
O atributo
ProcessAffectedObjects
do comandoBatch
indica se a instância também deverá processar qualquer objeto que exija o reprocessamento de um resultado de um comandoProcess
incluído no comandoBatch
que está processando um objeto especificado.A propriedade Bindings contém uma coleção de associações fora de linha usadas por todos os
Process
comandos noBatch
comando .A propriedade DataSource contém uma associação fora de linha para uma fonte de dados usada por todos os
Process
comandos noBatch
comando .A propriedade DataSourceView contém uma associação fora de linha para uma exibição de fonte de dados usada por todos os
Process
comandos noBatch
comando .A propriedade ErrorConfiguration especifica a maneira como o
Batch
comando lida com erros encontrados por todos osProcess
comandos contidos noBatch
comando.Importante
Um comando
Process
não poderá incluir as propriedadesBindings
,DataSource
,DataSourceView
ouErrorConfiguration
, se o comandoProcess
estiver contido em um comandoBatch
. Se você precisar especificar essas propriedades para um comandoProcess
, forneça as informações necessárias das propriedades correspondentes do comandoBatch
que contémProcess
.
Consulte Também
Elemento Batch (XMLA)
Elemento Process (XMLA)
Processamento de objetos de modelo multidimensional
Desenvolvendo com XMLA no Analysis Services