管理交易 (XMLA)
傳送至 Microsoft SQL Server Analysis Services實例的每個 XML for Analysis (XMLA) 命令都會在目前隱含或明確會話的交易內容中執行。 若要管理這些交易,您可以使用 BeginTransaction、 CommitTransaction和 RollbackTransaction 命令。 透過使用這些命令,您可以建立隱含或是明確的交易、變更交易參考計數,以及開始、認可或是回復交易。
隱含與明確交易。
交易是隱含或明確的:
隱含交易
如果 BeginTransaction
命令未指定交易的開頭,Analysis Services 會建立 XMLA 命令的隱含交易。 如果命令成功,Analysis Services 一律會認可隱含交易,並在命令失敗時回復隱含交易。
明確交易
如果命令啟動交易, BeginTransaction
Analysis Services 就會建立明確的交易。 不過,Analysis Services 只會在傳送命令時 CommitTransaction
認可明確的交易,並在傳送命令時 RollbackTransaction
回復明確的交易。
此外,如果目前的會話在作用中交易完成之前結束,Analysis Services 會同時回復隱含和明確的交易。
交易和參考計數
Analysis Services 會維護每個會話的交易參考計數。 不過,Analysis Services 不支援巢狀交易,每個會話只會維護一個使用中的交易。 如果目前的工作階段沒有使用中交易,則會將交易參考計數設定為 0。
換句話說,每個 BeginTransaction
命令都會以一為單位遞增參考計數,而每個 CommitTransaction
命令則會以一為單位遞減參考計數。 CommitTransaction
如果命令將交易計數設定為零,Analysis Services 會認可交易。
不過,RollbackTransaction
命令會回復使用中交易,不論交易參考計數目前的值為何。 換句話說,單一 RollbackTransaction
命令會回復使用中交易,不論傳送了多少 BeginTransaction
命令或是 CommitTransaction
命令,並將交易參考計數設定為零。
開始交易
BeginTransaction
命令會在目前的工作階段上開始明確交易,並以一為單位為目前的工作階段遞增交易參考計數。 所有後續的命令都會視為在使用中交易內,直到已傳送足夠的 CommitTransaction
命令認可使用中交易,或是傳送單一 RollbackTransaction
命令來回復使用中交易為止。
認可交易
CommitTransaction
命令會認可在目前的工作階段上執行 BeginTransaction
命令之後所執行的命令結果。 每個 CommitTransaction
命令會為工作階段上的使用中交易遞減參考計數。 CommitTransaction
如果命令將參考計數設定為零,Analysis Services 會認可使用中的交易。 如果沒有使用中交易 (換句話說,目前工作階段的交易參考計數已經設定為零),則 CommitTransaction
命令會產生錯誤。
回復交易
RollbackTransaction
命令會回復在目前的工作階段上執行 BeginTransaction
命令之後所執行的命令結果。 不論目前交易參考計數為何,RollbackTransaction
命令都會回復使用中交易,並將交易參考計數設定為零。 如果沒有使用中交易 (換句話說,目前工作階段的交易參考計數已經設定為零),則 RollbackTransaction
命令會產生錯誤。