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 Execute XMLA. È possibile eseguire più comandi contenuti nel Batch comando 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 per l'elaborazione Batch di più oggetti di Microsoft SQL Server Analysis Services.

Esecuzione di comandi batch transazionali e non transazionali

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

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 Batch rollback di qualsiasi comando nel comando eseguito prima del comando non riuscito e il Batch comando termina immediatamente. Tutti i comandi nel Batch comando che non sono ancora stati eseguiti non vengono eseguiti. Al termine del Batch comando, il Batch comando segnala eventuali errori che si sono verificati per il comando non riuscito.

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

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

Annotazioni

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

Restituzione di risultati da risultati batch transazionali

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

Restituzione di risultati da risultati batch non transazionali

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

Annotazioni

Se è possibile avviare almeno un comando in un batch non transazionale, il batch non transazionale viene considerato eseguito correttamente, anche se ogni comando contenuto nel batch non transazionale restituisce un errore nei risultati del Batch comando.

Uso dell'esecuzione seriale e parallela

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

Per eseguire i comandi in parallelo, aggiungere i comandi da eseguire in parallelo alla proprietà Parallel del Batch comando. Attualmente, Analysis Services può eseguire solo comandi process sequenziali contigui 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 garantisce che tutti i comandi inclusi Process possano essere eseguiti in parallelo. L'istanza analizza ogni Process comando e, se l'istanza determina che il comando non può essere eseguito in parallelo, il Process comando viene eseguito in serie.

Annotazioni

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

Limitazione dell'esecuzione parallela

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

Ad esempio, una Parallel proprietà 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 questa Parallel proprietà è impostato su 2. Di conseguenza, l'istanza esegue gli elenchi di comandi precedenti, come descritto nell'elenco seguente:

  • Il comando 1 viene eseguito in modo seriale perché il comando 1 è un Create comando e solo Process i comandi 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. Anche se il comando 6 è anche un Process comando, il comando 6 non può essere eseguito in parallelo con i comandi 4 e 5 perché la maxParallel proprietà è impostata su 2.

  • Il comando 6 viene eseguito serialmente dopo il completamento di entrambi i comandi 4 e 5.

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

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

Uso del comando Batch per elaborare oggetti

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

  • L'attributo ProcessAffectedObjectsBatch del comando indica se l'istanza deve elaborare anche qualsiasi oggetto che richiede la rielaborazione in seguito a un Process comando incluso nel comando che Batch elabora un oggetto specificato.

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

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

  • La proprietà DataSourceView contiene un'associazione out-of-line per una vista origine dati utilizzata 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 Process comando non può includere le Bindingsproprietà , DataSource, DataSourceViewo ErrorConfiguration , se il Process comando è contenuto in un Batch comando. Se è necessario specificare queste proprietà per un Process comando, specificare le informazioni necessarie nelle proprietà corrispondenti del Batch comando che contiene il Process comando .

Vedere anche

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