Condividi tramite


Esecuzione di operazioni batch (XMLA)

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

Esecuzione di comandi Batch transazionali e non transazionali

Il comando Batch consente di eseguire comandi in una delle due modalità riportate di seguito:

Transazionale
Se l'attributo Transaction del Batch comando è impostato su true, il Batch comando esegue i comandi di tutti i comandi contenuti dal Batch comando in un singolo batch transazionale .

Se un comando ha esito negativo in un batch transazionale, Analysis Services esegue il rollback di qualsiasi comando nel Batch comando eseguito prima del comando che ha avuto esito negativo e il Batch comando termina immediatamente. Viene inoltre sospesa l'esecuzione di tutti i comandi nel comando Batch non ancora eseguiti. Al termine del Batch comando, il Batch comando segnala eventuali errori che si sono verificati per il comando non riuscito.

Nontransactional
Se l'attributo Transaction è impostato su false, il Batch comando esegue ogni comando contenuto dal Batch comando in un batch nontransactional separato. Se in un batch non transazionale un comando non riesce, il comando Batch continua a eseguire i comandi successivi al comando non riuscito. Dopo che il Batch comando tenta di eseguire tutti i comandi che il comando contiene, il BatchBatch comando segnala eventuali errori che si sono verificati.

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

Nota

Se un Batch comando contiene un comando che non restituisce l'output, ad esempio il comando Lock e tale comando viene eseguito correttamente, il Batch comando restituisce un elemento radice vuoto all'interno dell'elemento risultati. Se l'elemento root è vuoto, ogni comando contenuto in un comando Batch può essere messo in corrispondenza con l'elemento root appropriato per i risultati del comando specifico.

Restituzione di risultati di un batch transazionale

I risultati di comandi eseguiti all'interno di un batch transazionale non vengono restituiti fino a quando l'intero comando Batch non è stato completato. I risultati non vengono restituiti dopo ciascuna esecuzione di un comando poiché qualsiasi comando che non riesce in un batch transazionale provocherebbe l'esecuzione del rollback dell'intero comando Batch e di tutti i comandi che contiene. Se tutti i comandi avviano ed eseguono correttamente, l'elemento restituito dall'elemento ExecuteResponse restituito dal metodo per il ExecuteBatch comando contiene un elemento risultati , che a sua volta contiene un root elemento per ogni comando eseguito correttamente contenuto nel Batch comando. Se non è possibile avviare o completare un comando contenuto nel comando Batch, il metodo Execute restituisce un errore SOAP per il comando Batch che contiene l'errore relativo al comando non riuscito.

Restituzione di risultati di un batch non transazionale

I risultati di comandi eseguiti in un batch non transazionale vengono restituiti nell'ordine in cui tali comandi sono contenuti nel comando Batch e nel modo in cui vengono restituiti da ogni comando. Se non è possibile avviare alcun comando contenuto nel comando Batch, il metodo Execute restituisce un errore SOAP relativo al comando Batch. Se almeno un comando viene avviato in modo corretto, l'elemento return dell'elemento ExecuteResponse restituito dal metodo Execute per il comando Batch contiene un elemento results, che a sua volta contiene un elemento root per ogni comando contenuto nel comando Batch. Se non è possibile avviare o completare uno o più comandi in un batch nontransactional, l'elemento per il comando non riuscito contiene un elemento di errore che descrive l'erroreroot.

Nota

L'esecuzione di un batch non transazionale viene considerata corretta purché sia possibile avviare almeno un comando contenuto nel batch, anche se ogni comando presente nel batch non transazionale restituisce un errore nei risultati del comando Batch.

Esecuzione in serie e parallela

Il comando Batch consente di eseguire i comandi inclusi serie o in parallelo. Quando i comandi vengono eseguiti in serie, il comando successivo incluso nel comando Batch non può essere avviato fino a quando il comando attualmente in esecuzione nel comando Batch non è completato. Quando i comandi vengono eseguiti in parallelo, il comando Batch può eseguire contemporaneamente più comandi.

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

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

Nota

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

Impostazioni di limiti all'esecuzione parallela

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

Una proprietà Parallel, ad esempio, contiene i comandi seguenti nella sequenza elencata:

  1. Create

  2. Process

  3. Alter

  4. Process

  5. Process

  6. Process

  7. Delete

  8. Process

  9. Process

L'attributo maxParallel di tale 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 poiché è un comando Create e solo i comandi Process possono essere eseguiti in parallelo.

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

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

  • I comandi 4 e 5 vengono eseguiti in parallelo dopo il completamento del comando 3. Sebbene il comando 6 sia anche un comando Process, non può essere eseguito in parallelo con i comandi 4 e 5 poiché 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 Batch comando contiene diverse proprietà e attributi facoltativi inclusi in modo specifico per supportare l'elaborazione di più progetti di Analysis Services:

  • L'attributo ProcessAffectedObjects del comando Batch indica se l'istanza deve elaborare anche qualsiasi oggetto per cui è necessario rieseguire l'elaborazione a seguito del risultato di un comando Process incluso in un comando Batch che elabora un oggetto specificato.

  • La proprietà Bindings contiene una raccolta di associazioni fuori riga usate da tutti i Process comandi nel Batch comando.

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

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

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

    Importante

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

Vedere anche

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