Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
È 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 singola transazione o in singole transazioni per ogni comando, in seriale o in parallelo. È anche possibile specificare associazioni fuori riga e altre proprietà nel comando Batch per l'elaborazione di più oggetti microsoft SQL Server SQL Server Analysis Services.
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 i comandi di tutti i comandi contenuti dal comando Batch in un singolo batch transazionale .
Se un comando ha esito negativo in un batch transazionale, SQL Server Analysis Services esegue il rollback di qualsiasi comando nel comando Batch eseguito prima del comando che ha avuto esito negativo e il comando Batch termina immediatamente. Tutti i comandi nel comando Batch che non sono ancora eseguiti non vengono eseguiti. Al termine del comando Batch , il comando Batch segnala eventuali errori che si sono verificati per il comando non riuscito.
Nontransactional
Se l'attributo Transaction è impostato su false, il comando Batch esegue ogni comando contenuto dal comando Batch in un batch nontransactional separato. Se qualsiasi comando ha esito negativo in un batch nontransactional, il comando Batch continua a eseguire i comandi dopo il comando che non è riuscito. Dopo che il comando Batch tenta di eseguire tutti i comandi contenuti dal comando Batch, il comando Batch segnala 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 in base al fatto che il comando Batch sia transazionale o non transazionale.
Nota
Se un comando Batch contiene un comando che non restituisce l'output, ad esempio il comando Lock e tale comando viene eseguito correttamente, il comando Batch restituisce un elemento radice vuoto all'interno dell'elemento risultati. L'elemento radice vuoto garantisce che ogni comando contenuto in un comando Batch possa essere associato all'elemento radice appropriato per i risultati di tale 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 tutti i comandi contenenti. Se tutti i comandi iniziano ed eseguono correttamente, l'elemento restituito dall'elemento ExecuteResponse restituito dal metodo Execute per il comando Batch contiene un elemento risultati , che a sua volta contiene un elemento radice per ogni comando eseguito correttamente contenuto nel comando Batch . Se un comando nel comando Batch non può essere avviato o non riesce, il metodo Execute restituisce un errore SOAP per il comando Batch che contiene l'errore del comando che non è riuscito.
Restituzione di risultati di un batch non transazionale
I risultati dei comandi eseguiti all'interno di un batch nontransactional vengono restituiti nell'ordine in cui i comandi sono contenuti nel comando Batch e vengono restituiti da ogni comando. Se non è possibile avviare correttamente alcun comando contenuto nel comando Batch , il metodo Execute restituisce un errore SOAP che contiene 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 risultati , che a sua volta contiene un elemento radice per ogni comando contenuto nel comando Batch . Se non è possibile avviare o non completare uno o più comandi in un batch nontransactional, l'elemento radice per il comando non riuscito contiene un elemento di errore che descrive l'errore.
Nota
Purché sia possibile avviare almeno un comando in un batch nontransactional, il batch nontransactional viene considerato eseguito correttamente, anche se ogni comando contenuto nel batch nontransactional restituisce un errore nei risultati del comando Batch .
Esecuzione in serie e parallela
È possibile usare il comando Batch per eseguire comandi inclusi in seriale o in parallelo. Quando i comandi vengono eseguiti in serie, il comando successivo incluso nel comando Batch non può iniziare fino al completamento del comando in esecuzione nel comando Batch. Quando i comandi vengono eseguiti in parallelo, è possibile eseguire più comandi contemporaneamente dal comando Batch .
Per eseguire i comandi in parallelo, aggiungere i comandi da eseguire in parallelo alla proprietà Parallel del comando Batch . Attualmente, SQL Server Analysis Services può eseguire solo comandi di processo contigui e sequenziali in parallelo. Qualsiasi altro comando XMLA, ad esempio Create o Alter, incluso nella proprietà Parallel viene eseguito serialmente.
SQL Server Analysis Services tenta di 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 seriale.
Nota
Per eseguire comandi in parallelo, l'attributo Transaction del comando Batch deve essere impostato su true perché SQL Server Analysis Services supporta una sola transazione attiva per connessione e batch nontransactionali eseguono ogni comando in una transazione separata. Se si include la proprietà Parallel in un batch nontransactional, si verifica un errore.
Impostazioni di limiti all'esecuzione parallela
Un'istanza di SQL Server Analysis Services tenta di eseguire il maggior numero possibile di comandi Process in parallelo, fino ai limiti del computer in cui viene eseguita l'istanza. È possibile limitare il numero di comandi process contemporaneamente eseguendo i comandi Process 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:
Creare
Processo
Modificare
Processo
Processo
Processo
Elimina
Processo
Processo
L'attributo maxParallel 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 serialmente perché il comando 1 è 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. 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ù progetti di SQL Server Analysis Services:
L'attributo ProcessAffectedObjects del comando Batch indica se l'istanza deve anche elaborare qualsiasi oggetto che richiede di rielaborare come risultato di un comando Process incluso nell'elaborazione di un oggetto specificato nel comando Batch .
La proprietà Bindings contiene una raccolta di associazioni fuori riga 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 visualizzazione 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à Binding, 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