다음을 통해 공유


트랜잭션 관리(XMLA)

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

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

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

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

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

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

트랜잭션 및 참조 수

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

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

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

트랜잭션 시작

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

트랜잭션 커밋

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

트랜잭션 롤백

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

또한 참조하십시오

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