트랜잭션 관리(XMLA)

Microsoft SQL Server SQL Server Analysis Services 인스턴스로 전송된 모든 XMLA(XML for Analysis) 명령은 현재 암시적 또는 명시적 세션의 트랜잭션 컨텍스트 내에서 실행됩니다. 이러한 각 트랜잭션을 관리하려면 BeginTransaction, CommitTransactionRollbackTransaction 명령을 사용합니다. 이러한 명령을 사용하여 암시적 또는 명시적 트랜잭션을 만들거나 트랜잭션 참조 횟수를 변경하거나 트랜잭션을 시작, 커밋 또는 롤백할 수 있습니다.

암시적 트랜잭션 및 명시적 트랜잭션

트랜잭션은 암시적이거나 명시적입니다.

암시적 트랜잭션
SQL Server Analysis Services BeginTransaction 명령이 트랜잭션의 시작을 지정하지 않는 경우 XMLA 명령에 대한 암시적 트랜잭션을 만듭니다. SQL Server Analysis Services 명령이 성공하면 항상 암시적 트랜잭션을 커밋하고 명령이 실패하면 암시적 트랜잭션을 롤백합니다.

명시적 트랜잭션
SQL Server Analysis Services BeginTransaction 명령이 트랜잭션을 시작하는 경우 명시적 트랜잭션을 만듭니다. 그러나 SQL Server Analysis Services CommitTransaction 명령을 보낸 경우에만 명시적 트랜잭션을 커밋하고 RollbackTransaction 명령이 전송된 경우 명시적 트랜잭션을 롤백합니다.

또한 현재 세션이 활성 트랜잭션이 완료되기 전에 종료되는 경우 SQL Server Analysis Services 암시적 트랜잭션과 명시적 트랜잭션을 모두 롤백합니다.

트랜잭션 및 참조 횟수

SQL Server Analysis Services 각 세션에 대한 트랜잭션 참조 수를 유지 관리합니다. 그러나 SQL Server Analysis Services 세션당 하나의 활성 트랜잭션만 유지 관리된다는 측면에서 중첩 트랜잭션을 지원하지 않습니다. 현재 세션에 활성 트랜잭션이 없는 경우 트랜잭션 참조 횟수가 0으로 설정됩니다.

즉, 각 BeginTransaction 명령은 참조 수를 1씩 증가하지만 각 CommitTransaction 명령은 참조 수를 1씩 감소합니다. CommitTransaction 명령이 트랜잭션 수를 0으로 설정하면 SQL Server Analysis Services 트랜잭션을 커밋합니다.

그러나 RollbackTransaction 명령은 트랜잭션 참조 수의 현재 값에 관계없이 활성 트랜잭션을 롤백합니다. 즉, 단일 RollbackTransaction 명령은 보낸 BeginTransaction 명령 또는 CommitTransaction 명령 수에 관계없이 활성 트랜잭션을 롤 백하고 트랜잭션 참조 수를 0으로 설정합니다.

트랜잭션 시작

BeginTransaction 명령은 현재 세션에서 명시적 트랜잭션을 시작하고 현재 세션에 대한 트랜잭션 참조 수를 1씩 증분합니다. 모든 후속 명령은 활성 트랜잭션을 커밋하기 위해 충분한 CommitTransaction 명령이 전송되거나 활성 트랜잭션을 롤백하기 위해 단일 RollbackTransaction 명령이 전송될 때까지 활성 트랜잭션 내에 있는 것으로 간주됩니다.

트랜잭션 커밋

CommitTransaction 명령은 현재 세션에서 BeginTransaction 명령을 실행한 후 실행되는 명령의 결과를 커밋합니다. 각 CommitTransaction 명령은 세션의 활성 트랜잭션에 대한 참조 수를 감소합니다. CommitTransaction 명령이 참조 수를 0으로 설정하면 SQL Server Analysis Services 활성 트랜잭션을 커밋합니다. 활성 트랜잭션이 없는 경우(즉, 현재 세션의 트랜잭션 참조 수가 이미 0으로 설정되어 있음) CommitTransaction 명령으로 인해 오류가 발생합니다.

트랜잭션 롤백

RollbackTransaction 명령은 현재 세션에서 BeginTransaction 명령을 실행한 후 실행되는 명령의 결과를 롤백합니다. RollbackTransaction 명령은 현재 트랜잭션 참조 수에 관계없이 활성 트랜잭션을 롤백하고 트랜잭션 참조 수를 0으로 설정합니다. 활성 트랜잭션이 없는 경우(즉, 현재 세션에 대한 트랜잭션 참조 수가 이미 0으로 설정되어 있음) RollbackTransaction 명령으로 인해 오류가 발생합니다.

참고 항목

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