Esecuzione di operazioni batch (XMLA)

È possibile usare il comando Batch in XML for Analysis (XMLA) per eseguire più comandi XMLA usando un singolo metodo Execute XMLA. È possibile eseguire più comandi contenuti nel comando Batch come singola transazione o in singole transazioni per ogni comando, in serie o in parallelo. È anche possibile specificare associazioni out-of-line e altre proprietà nel comando Batch per l'elaborazione di più Microsoft SQL Server Analysis Services oggetti.

Esecuzione di comandi Batch transazionali e non transazionali

Il comando Batch esegue i comandi in uno dei due modi seguenti:

Transazionale
Se l'attributo Transaction del comando Batch è impostato su true, il comando Batch esegue comandi per tutti i comandi contenuti nel comando Batch in un'unica transazione, un batch transazionale.

Se un comando ha esito negativo in un batch transazionale, esegue il rollback di qualsiasi comando nel comando Batch eseguito prima del comando non riuscito e il Analysis Services comando Batch termina immediatamente. Tutti i comandi nel comando Batch che non sono ancora stati eseguiti non vengono eseguiti. Al termine del comando Batch, il comando Batch segnala tutti gli errori che si sono verificati per il comando non riuscito.

Non transazionale
Se l'attributo Transaction è impostato su false, il comando Batch esegue ogni comando contenuto nel comando Batch in un batch transazionale separato, non transazionale. Se un comando ha esito negativo in un batch non transazionale, il comando Batch continua a eseguire i comandi dopo il comando che ha avuto esito negativo. Dopo che il comando Batch ha provato a eseguire tutti i comandi contenuti nel comando Batch, il comando Batch segnala gli eventuali errori che si sono verificati.

Tutti i risultati restituiti dai comandi contenuti in un comando Batch vengono restituiti nello stesso ordine in cui i comandi sono contenuti nel comando Batch. I risultati restituiti da un comando Batch variano a seconda che il comando Batch sia transazionale o non transazionale.

Nota

Se un comando Batch contiene un comando che non restituisce output, ad esempio il comando Lock, e tale comando viene eseguito correttamente, il comando Batch restituisce un elemento radice vuoto all'interno dell'elemento results. L'elemento radice vuoto garantisce che ogni comando contenuto in un comando Batch possa essere associato all'elemento radice appropriato per i risultati del comando.

Restituzione di risultati di un batch transazionale

I risultati dei comandi eseguiti all'interno di un batch transazionale non vengono restituiti fino al completamento dell'intero comando Batch. I risultati non vengono restituiti dopo l'esecuzione di ogni comando perché qualsiasi comando che ha esito negativo all'interno di un batch transazionale causerebbe il rollback dell'intero comando Batch e di tutti i comandi contenenti. Se tutti i comandi vengono avviati ed eseguiti correttamente, l'elemento restituito dell'elemento ExecuteResponse restituito dal metodo Execute per il comando Batch contiene un elemento results, che a sua volta contiene un elemento radice per ogni comando eseguito correttamente contenuto nel comando Batch. Se non è possibile avviare o completare un comando nel comando Batch, il metodo Execute restituisce un errore SOAP per il comando Batch che contiene l'errore del comando non riuscito.

Restituzione di risultati di un batch non transazionale

I risultati dei comandi eseguiti all'interno di un batch non transazionale vengono restituiti nell'ordine in cui i comandi sono contenuti nel comando Batch e quando vengono restituiti da ogni comando. Se nessun comando contenuto nel comando Batch può essere avviato correttamente, il metodo Execute restituisce un errore SOAP contenente un errore per il comando Batch. Se almeno un comando viene avviato correttamente, l'elemento restituito dell'elemento ExecuteResponse restituito dal metodo Execute per il comando Batch contiene un elemento results, che a sua volta contiene un elemento radice per ogni comando contenuto nel comando Batch. Se uno o più comandi in un batch non transazionale non possono essere avviati o non vengono completati, l'elemento radice per il comando non riuscito contiene un elemento error che descrive l'errore.

Nota

Finché è possibile iniziare almeno un comando in un batch non transazionale, si considera che il batch non transazionale sia stato eseguito correttamente, anche se ogni comando contenuto nel batch non transazionale restituisce un errore nei risultati del comando Batch.

Esecuzione in serie e parallela

È possibile usare il comando Batch per eseguire comandi inclusi in serie o in parallelo. Quando i comandi vengono eseguiti in serie, il comando successivo incluso nel comando Batch non può essere avviato fino al completamento del comando attualmente in esecuzione nel comando Batch. Quando i comandi vengono eseguiti in parallelo, più comandi possono essere eseguiti contemporaneamente dal comando Batch.

Per eseguire i comandi in parallelo, aggiungere i comandi da eseguire in parallelo alla proprietà Parallel del comando Batch. Attualmente, può eseguire in parallelo solo comandi di Analysis Services processo sequenziali contigui. Qualsiasi altro comando XMLA, ad esempio Create o Alter,incluso nella proprietà Parallel viene eseguito in modo seriale.

Analysis Services prova a eseguire tutti i comandi Process inclusi nella proprietà Parallel in parallelo, ma non può garantire che tutti i comandi Process inclusi possano essere eseguiti in parallelo. L'istanza analizza ogni comando Process e, se l'istanza determina che il comando non può essere eseguito in parallelo, il comando Process viene eseguito in serie.

Nota

Per eseguire i comandi in parallelo, l'attributo Transaction del comando Batch deve essere impostato su true perché supporta una sola transazione attiva per ogni connessione e i batch non transazionali eseguono ogni comando in una transazione Analysis Services separata. Se si include la proprietà Parallel in un batch non transazionale, si verifica un errore.

Impostazioni di limiti all'esecuzione parallela

Un'istanza tenta di eseguire il maggior numero possibile di comandi Process in parallelo, fino ai limiti del computer in cui viene eseguita Analysis Services l'istanza. È possibile limitare il numero di comandi Process in esecuzione simultanea impostando l'attributo maxParallel della proprietà Parallel su un valore che indica il numero massimo di comandi Process che possono essere eseguiti in parallelo.

Ad esempio, una proprietà Parallel contiene i comandi seguenti nella sequenza elencata:

  1. Creare

  2. Processo

  3. Alter

  4. Processo

  5. Processo

  6. Processo

  7. Elimina

  8. Processo

  9. Processo

L'attributo maxParalle l di questa proprietà Parallel è impostato su 2. Di conseguenza l'istanza esegue gli elenchi precedenti di comandi nel modo descritto nell'elenco seguente:

  • Il comando 1 viene eseguito in serie perché il comando 1 è un comando Create e solo i comandi Process possono essere eseguiti in parallelo.

  • Il comando 2 viene eseguito in serie dopo il completamento del comando 1.

  • Il comando 3 viene eseguito in serie dopo il completamento del comando 2.

  • I comandi 4 e 5 vengono eseguiti in parallelo dopo il completamento del comando 3. Anche se il comando 6 è anche un comando Process, il comando 6 non può essere eseguito in parallelo con i comandi 4 e 5 perché la proprietà maxParallel è impostata su 2.

  • Il comando 6 viene eseguito in serie dopo il completamento dei comandi 4 e 5.

  • Il comando 7 viene eseguito in serie dopo il completamento del comando 6.

  • I comandi 8 e 9 vengono eseguiti in parallelo dopo il completamento del comando 7.

Utilizzo del comando Batch per l'elaborazione di oggetti

Il comando Batch contiene diverse proprietà e attributi facoltativi inclusi in modo specifico per supportare l'elaborazione di più Analysis Services progetti:

  • L'attributo ProcessAffectedObjects del comando Batch indica se l'istanza deve elaborare anche qualsiasi oggetto che richiede la rielaborazione come risultato di un comando Process incluso nel comando Batch che elabora un oggetto specificato.

  • La proprietà Bindings contiene una raccolta di associazioni out-of-line usate da tutti i comandi Process nel comando Batch.

  • La proprietà DataSource contiene un'associazione out-of-line per un'origine dati usata da tutti i comandi Process nel comando Batch.

  • La proprietà DataSourceView contiene un'associazione out-of-line per una vista origine dati usata da tutti i comandi Process nel comando Batch.

  • La proprietà ErrorConfiguration specifica il modo in cui il comando Batch gestisce gli errori rilevati da tutti i comandi Process contenuti nel comando Batch.

    Importante

    Un comando Process non può includere le proprietà Bindings, DataSource, DataSourceView o ErrorConfiguration, se il comando Process è contenuto in un comando Batch. Se è necessario specificare queste proprietà per un comando Process, specificare le informazioni necessarie nelle proprietà corrispondenti del comando Batch che contiene il comando Process.

Vedere anche

Elemento Batch (XMLA)
Elemento Process (XMLA)
Elaborazione di un modello multidimensionale (Analysis Services)
Sviluppo con XMLA in Analysis Services