Partilhar via


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:

  1. Create

  2. Process

  3. Alter

  4. Process

  5. Process

  6. Process

  7. Delete

  8. Process

  9. Process

O atributo maxParallel 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 comandos Process 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 propriedade maxParallel 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 comando Batch indica se a instância também deverá processar qualquer objeto que exija o reprocessamento de um resultado de um comando Process incluído no comando Batch 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 no Batch comando .

  • A propriedade DataSource contém uma associação fora de linha para uma fonte de dados usada por todos os Process comandos no Batch 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 no Batch comando .

  • A propriedade ErrorConfiguration especifica a maneira como o Batch comando lida com erros encontrados por todos os Process comandos contidos no Batch comando.

    Importante

    Um comando Process não poderá incluir as propriedades Bindings, DataSource, DataSourceView ou ErrorConfiguration, se o comando Process estiver contido em um comando Batch. Se você precisar especificar essas propriedades para um comando Process, forneça as informações necessárias das propriedades correspondentes do comando Batch que contém Process.

Consulte Também

Elemento Batch (XMLA)
Elemento Process (XMLA)
Processamento de objetos de modelo multidimensional
Desenvolvendo com XMLA no Analysis Services