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 Batch
Batch
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 Execute
Batch
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 Transaction
Batch
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:
Create
Process
Alter
Process
Process
Process
Delete
Process
Process
L'attributo maxParalle
l 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 comandiProcess
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 comandoBatch
indica se l'istanza deve elaborare anche qualsiasi oggetto per cui è necessario rieseguire l'elaborazione a seguito del risultato di un comandoProcess
incluso in un comandoBatch
che elabora un oggetto specificato.La proprietà Bindings contiene una raccolta di associazioni fuori riga usate da tutti i
Process
comandi nelBatch
comando.La proprietà DataSource contiene un'associazione out-of-line per un'origine
Batch
dati usata da tutti iProcess
comandi nel comando.La proprietà DataSourceView contiene un'associazione out-of-line per una visualizzazione origine dati usata da tutti i
Process
comandi nelBatch
comando.La proprietà ErrorConfiguration specifica il modo in cui il
Batch
comando gestisce gli errori rilevati da tutti iProcess
comandi contenuti nelBatch
comando.Importante
Un comando
Process
non può includere la proprietàBindings
,DataSource
,DataSourceView
oErrorConfiguration
se il comandoProcess
è contenuto in un comandoBatch
. Se è necessario specificare queste proprietà per un comandoProcess
, fornire le informazioni necessarie nelle proprietà corrispondenti del comandoBatch
che contiene il comandoProcess
.
Vedere anche
Elemento Batch (XMLA)
Elemento Process (XMLA)
Elaborazione di oggetti del modello multidimensionale
Sviluppo con XMLA in Analysis Services