트랜잭션 관리(XMLA)Managing Transactions (XMLA)

인스턴스로 보낸 Analysis (XMLA) 명령에 대 한 모든 XML MicrosoftMicrosoft SQL ServerSQL Server Analysis ServicesAnalysis Services 현재 암시적 또는 명시적 세션에서 트랜잭션 컨텍스트 내에서 실행 됩니다.Every XML for Analysis (XMLA) command sent to an instance of MicrosoftMicrosoft SQL ServerSQL Server Analysis ServicesAnalysis Services runs within the context of a transaction on the current implicit or explicit session. 이러한 트랜잭션을 각각 관리 하려면 사용 된 BeginTransaction, CommitTransaction, 및 RollbackTransaction 명령입니다.To manage each of these transactions, you use the BeginTransaction, CommitTransaction, and RollbackTransaction commands. 이러한 명령을 사용하여 암시적 또는 명시적 트랜잭션을 만들거나 트랜잭션 참조 횟수를 변경하거나 트랜잭션을 시작, 커밋 또는 롤백할 수 있습니다.By using these commands, you can create implicit or explicit transactions, change the transaction reference count, as well as start, commit, or roll back transactions.

암시적 트랜잭션 및 명시적 트랜잭션Implicit and Explicit Transactions

트랜잭션은 암시적이거나 명시적입니다.A transaction is either implicit or explicit:

암시적 트랜잭션Implicit transaction
Analysis ServicesAnalysis Services만듭니다는 암시적 XMLA에 대 한 트랜잭션을 경우 명령에서 BeginTransaction 명령은 트랜잭션 시작을 지정 하지 않습니다. creates an implicit transaction for an XMLA command if the BeginTransaction command does not specify the start of a transaction. Analysis ServicesAnalysis Services는 명령이 성공하는 경우 항상 암시적 트랜잭션을 커밋하고 명령이 실패하는 경우 암시적 트랜잭션을 롤백합니다. always commits an implicit transaction if the command succeeds, and rolls back an implicit transaction if the command fails.

명시적 트랜잭션Explicit transaction
Analysis ServicesAnalysis Services만듭니다는 명시적 트랜잭션 하는 경우는 BeginTransaction 명령에서 트랜잭션을 시작 합니다. creates an explicit transaction if the BeginTransaction command starts of a transaction. 그러나 Analysis ServicesAnalysis Services 경우에 명시적 트랜잭션을 커밋하는 CommitTransaction 명령을 전송 되 고 경우 명시적 트랜잭션을 롤백합니다는 RollbackTransaction 명령이 전송 됩니다.However, Analysis ServicesAnalysis Services only commits an explicit transaction if a CommitTransaction command is sent, and rolls back an explicit transaction if a RollbackTransaction command is sent.

또한 활성 트랜잭션이 완료되기 전에 현재 세션이 끝나면 Analysis ServicesAnalysis Services는 암시적 트랜잭션과 명시적 트랜잭션을 모두 롤백합니다.In addition, Analysis ServicesAnalysis Services rolls back both implicit and explicit transactions if the current session ends before the active transaction completes.

트랜잭션 및 참조 횟수Transactions and Reference Counts

Analysis ServicesAnalysis Services는 각 세션의 트랜잭션 참조 횟수를 유지 관리합니다. maintains a transaction reference count for each session. 그러나 세션별로 하나의 활성 트랜잭션만 유지 관리되는 경우 Analysis ServicesAnalysis Services는 중첩된 트랜잭션을 지원하지 않습니다.However, Analysis ServicesAnalysis Services does not support nested transactions in that only one active transaction is maintained per session. 현재 세션에 활성 트랜잭션이 없는 경우 트랜잭션 참조 횟수가 0으로 설정됩니다.If the current session does not have an active transaction, the transaction reference count is set to zero.

즉, 각 BeginTransaction 명령은 참조 횟수를 1 씩 늘리고 각 CommitTransaction 씩 참조 횟수를 명령 감소 합니다.In other words, each BeginTransaction command increments the reference count by one, while each CommitTransaction command decrements the reference count by one. 경우는 CommitTransaction 트랜잭션 개수를 0으로 설정 하는 명령 Analysis ServicesAnalysis Services 트랜잭션을 커밋합니다.If a CommitTransaction command sets the transaction count to zero, Analysis ServicesAnalysis Services commits the transaction.

그러나는 RollbackTransaction 명령은 트랜잭션 참조 횟수의 현재 값에 관계 없이 활성 트랜잭션을 롤백합니다.However, the RollbackTransaction command rolls back the active transaction regardless of the current value of the transaction reference count. 즉, 단일 RollbackTransaction 명령은 개수에 관계 없이 활성 트랜잭션을 롤백합니다. BeginTransaction 명령 또는 CommitTransaction 전송 된 명령과 트랜잭션 참조 횟수를 0으로 설정 합니다.In other words, a single RollbackTransaction command rolls back the active transaction, no matter how many BeginTransaction commands or CommitTransaction commands were sent, and sets the transaction reference count to zero.

트랜잭션 시작Beginning a Transaction

BeginTransaction 명령은 현재 세션에서 명시적 트랜잭션을 시작 하 고 하나에서 현재 세션에 대 한 트랜잭션 참조 횟수를 증가 시킵니다.The BeginTransaction command begins an explicit transaction on the current session and increments the transaction reference count for the current session by one. 이후 모든 명령은 충분 될 때까지 활성 트랜잭션 내 것으로 간주 됩니다 CommitTransaction 명령은 단일 또는 활성 트랜잭션 커밋에 전송 되어 RollbackTransaction활성 트랜잭션을 롤백할 명령이 전송 됩니다.All subsequent commands are considered to be within the active transaction, until either enough CommitTransaction commands are sent to commit the active transaction or a single RollbackTransaction command is sent to roll back the active transaction.

트랜잭션 커밋Committing a Transaction

CommitTransaction 명령 후에 실행 되는 명령 결과 커밋합니다는 BeginTransaction 명령이 현재 세션에서 실행 된 합니다.The CommitTransaction command commits the results of commands that are run after the BeginTransaction command was run on the current session. CommitTransaction 명령은 참조 횟수를 줄입니다 활성 트랜잭션에 대 한 세션입니다.Each CommitTransaction command decrements the reference count for active transactions on a session. 경우는 CommitTransaction 명령은 참조 횟수를 0으로 설정 Analysis ServicesAnalysis Services 활성 트랜잭션을 커밋합니다.If a CommitTransaction command sets the reference count to zero, Analysis ServicesAnalysis Services commits the active transaction. 활성 트랜잭션이 없는 경우 (즉, 현재 세션의 트랜잭션 참조 횟수는 이미 설정 0)는 CommitTransaction 명령에서 오류가 발생 합니다.If there is no active transaction (in other words, the transaction reference count for the current session is already set to zero), a CommitTransaction command results in an error.

트랜잭션 롤백Rolling Back a Transaction

RollbackTransaction 명령은 후 실행 되는 명령 결과를 롤백합니다.는 BeginTransaction 명령이 현재 세션에서 실행 된 합니다.The RollbackTransaction command rolls back the results of commands that are run after the BeginTransaction command was run on the current session. RollbackTransaction 명령을 현재 트랜잭션 참조 횟수에 관계 없이 활성 트랜잭션을 롤백하고 트랜잭션 참조 횟수를 0으로 설정 합니다.The RollbackTransaction command rolls back the active transaction, regardless of the current transaction reference count, and sets the transaction reference count to zero. 활성 트랜잭션이 없는 경우 (즉, 현재 세션의 트랜잭션 참조 횟수는 이미 설정 0)는 RollbackTransaction 명령에서 오류가 발생 합니다.If there is no active transaction (in other words, the transaction reference count for the current session is already set to zero), a RollbackTransaction command results in an error.

관련 항목:See Also

Analysis Services에서 XMLA를 사용 하 여 개발Developing with XMLA in Analysis Services