MS DTC 분산 트랜잭션

OLE DB, ODBC(Open Database Connectivity), ADO(ActiveX Data Objects) 또는 DB-Library를 사용하여 작성된 응용 프로그램은 Transact-SQL 문을 실행하여 Transact-SQL 분산 트랜잭션을 시작 및 중지함으로써 Transact-SQL 분산 트랜잭션을 사용할 수 있습니다. OLE DB 및 ODBC에는 분산 트랜잭션을 관리하기 위한 API(응용 프로그래밍 인터페이스) 수준의 지원도 포함되어 있습니다. OLE DB 및 ODBC 응용 프로그램은 이러한 API 함수를 사용하여 SQL Server 데이터베이스 엔진 이외의 MS DTC(Microsoft Distributed Transaction Coordinator) 트랜잭션을 지원하는 다른 COM(구성 요소 개체 모델) 리소스를 포함하는 분산 트랜잭션을 관리할 수 있습니다. 또한 API 함수를 사용하여 데이터베이스 엔진 인스턴스를 실행하는 여러 컴퓨터를 포함하는 분산 트랜잭션 경계를 더욱 강력하게 제어할 수도 있습니다.

ODBC 분산 트랜잭션

연결 특성 SQL_ATTR_AUTOCOMMIT을 SQL_AUTOCOMMIT_OFF로 설정한 다음 SQLEndTran 함수를 호출하여 각 트랜잭션을 커밋 또는 롤백함으로써 ODBC API 수준에서 로컬 트랜잭션을 제어할 수 있습니다. ODBC 응용 프로그램에서는 이러한 함수를 사용하여 분산 트랜잭션을 관리하지 마십시오. 대신 MS DTC COM 메서드를 사용하십시오.

  • DtcGetTransactionManager를 호출하여 MS DTC에 연결합니다.
  • ITransactionDispenser::BeginTransaction을 호출하여 분산 트랜잭션을 시작하고 트랜잭션 개체를 가져옵니다.
  • 분산 트랜잭션에 참여하는 각 ODBC 연결에 대해 ODBC 함수 SQLSetConnectAttr을 SQL_COPT_SS_ENLIST_IN_DTC로 설정된 fOptionITransactionDispenser::BeginTransaction으로부터의 트랜잭션 개체 주소를 갖고 있는 vParam과 함께 호출합니다.
  • 트랜잭션이 완료되면 ODBC SQLEndTran 함수를 호출하는 대신 ITransactionDispenser::BeginTransaction으로부터 얻은 트랜잭션 개체에 대해 ITransaction::Commit 또는 ITransaction::Rollback 메서드를 호출합니다.

OLE DB 분산 트랜잭션

OLE DB에서 분산 트랜잭션을 제어하는 모델은 로컬 트랜잭션을 제어하는 것과 비슷합니다. 로컬 트랜잭션을 제어하기 위해 OLE DB 소비자는 다음을 수행합니다.

  • ITransactionLocal::StartTransaction 메서드를 사용하여 로컬 트랜잭션을 시작하고 트랜잭션 개체를 가져옵니다.
  • 그런 다음 ITransactionLocal::StartTransaction이 가져온 트랜잭션 개체에 대해 ITransaction::Commit 또는 ITransaction::Rollback 메서드를 호출합니다.

분산 트랜잭션을 제어하기 위해 소비자는 다음을 수행합니다.

  • DtcGetTransactionManager를 호출하여 MS DTC에 연결합니다.
  • ITransactionDispenser::BeginTransaction을 호출하여 분산 트랜잭션을 시작하고 트랜잭션 개체를 가져옵니다.
  • 분산 트랜잭션에 참여하는 각 연결에 대해 분산 트랜잭션 개체의 ITransactionJoin 인터페이스를 호출합니다.
  • 분산 트랜잭션 개체의 ITransaction::Commit 또는 ITransaction::Rollback 메서드를 호출하여 트랜잭션을 완료합니다.

참고 항목

관련 자료

Supporting Distributed Transactions
Performing Distributed Transactions

도움말 및 정보

SQL Server 2005 지원 받기