Transact-SQL 분산 트랜잭션

Transact-SQL 에서 시작되는 분산 트랜잭션의 구조는 비교적 간단합니다.

  1. Transact-SQL 스크립트나 응용 프로그램 연결은 분산 트랜잭션을 시작하는 Transact-SQL 문을 실행합니다.
  2. 문을 실행하는 SQL Server 데이터베이스 엔진 인스턴스는 트랜잭션에서 제어 서버가 됩니다.
  3. 그런 다음 스크립트나 응용 프로그램은 연결된 서버에 대해 분산 쿼리를 실행하거나 원격 서버에 대해 원격 저장 프로시저를 실행합니다.
  4. 분산 쿼리 및 원격 프로시저가 호출될 때 제어 서버는 자동으로 MS DTC(Microsoft Distributed Transaction Coordinator)를 호출하여 연결된 서버 및 원격 서버를 분산 트랜잭션에 참여시킵니다.
  5. 스크립트 또는 응용 프로그램이 COMMIT 또는 ROLLBACK 문을 실행하면 SQL Server 의 제어 인스턴스가 MS DTC를 호출하여 2단계 커밋 프로세스를 관리하거나 연결된 서버 및 원격 서버에 트랜잭션을 롤백하도록 알립니다.

필요한 Transact-SQL 문

대부분의 작업이 SQL Server 데이터베이스 엔진 및 MS DTC에서 내부적으로 수행되므로 분산 트랜잭션을 제어하는 Transact-SQL 문은 거의 없습니다. Transact-SQL 스크립트 또는 응용 프로그램에 필요한 Transact-SQL 문은 다음과 같은 작업에 필요한 문입니다.

  • 분산 트랜잭션을 시작합니다.
  • 연결된 서버에 대해 분산 쿼리를 수행하거나 원격 서버에 대해 원격 프로시저 호출을 실행합니다.
  • 표준 Transact-SQL COMMIT TRANSACTION, COMMIT WORK, ROLLBACK TRANSACTION 또는 ROLLBACK WORK 문을 호출하여 트랜잭션을 완료합니다.
    Transact-SQL 분산 트랜잭션의 경우 Transact-SQL 스크립트 또는 연결을 처리하는 데이터베이스 엔진 의 인스턴스가 자동으로 MS DTC를 호출하여 트랜잭션의 커밋 또는 롤백을 조정합니다.

분산 트랜잭션 시작

Transact-SQL 에서는 다음과 같은 방법으로 분산 트랜잭션을 시작할 수 있습니다.

  • BEGIN DISTRIBUTED TRANSACTION 문을 사용하여 명시적 분산 트랜잭션을 시작합니다.
    또한 연결된 서버에 대해 분산 쿼리를 실행할 수도 있습니다. 연결한 데이터베이스 엔진 의 인스턴스는 MS DTC를 호출하여 연결된 서버가 있는 분산 트랜잭션을 관리할 수 있습니다. 데이터베이스 엔진 의 원격 인스턴스에서 분산 트랜잭션의 일부로 원격 저장 프로시저를 호출할 수도 있습니다.
  • 로컬 트랜잭션에서 분산 쿼리를 실행합니다.
    OLE DB 데이터 원본이 ITransactionJoin 인터페이스를 지원하는 경우에는 쿼리가 읽기 전용이더라도 트랜잭션 수준이 분산 트랜잭션으로 높아집니다. 데이터 원본이 ITransactionJoin을 지원하지 않으면 읽기 전용 문만 허용됩니다.
  • SET REMOTE_PROC_TRANSACTIONS ON이 실행되고 로컬 트랜잭션이 데이터베이스 엔진 의 다른 인스턴스에서 원격 저장 프로시저를 호출하면 로컬 트랜잭션 수준이 분산 트랜잭션으로 높아집니다.
    데이터베이스 엔진 은 MS DTC를 사용하여 원격 서버와의 트랜잭션을 조정합니다. REMOTE_PROC_TRANSACTIONS를 OFF로 설정한 경우 원격 저장 프로시저를 호출하면 로컬 트랜잭션 범위 밖에서 실행됩니다. 로컬 트랜잭션이 롤백되면 원격 프로시저에서 수행된 작업은 롤백되지 않습니다. 원격 저장 프로시저에서 수행된 작업은 로컬 트랜잭션이 커밋될 때가 아니라 프로시저가 완료될 때 커밋됩니다.

REMOTE_PROC_TRANSACTIONS 옵션은 sp_addserver를 사용해 정의된 원격 서버에 수행된 원격 저장 프로시저 호출에만 영향을 주는 호환성 옵션입니다. 이 옵션은 sp_addlinkedserver를 사용해 정의된 연결된 서버에서 저장 프로시저를 실행하는 분산 쿼리에는 적용되지 않습니다. 분산 쿼리에 대한 자세한 내용은 분산 쿼리를 참조하십시오.

참고 항목

관련 자료

BEGIN DISTRIBUTED TRANSACTION(Transact-SQL)
ROLLBACK TRANSACTION(Transact-SQL)
COMMIT TRANSACTION(Transact-SQL)
ROLLBACK WORK(Transact-SQL)
COMMIT WORK(Transact-SQL)
SET REMOTE_PROC_TRANSACTIONS(Transact-SQL)

도움말 및 정보

SQL Server 2005 지원 받기