본문 바로가기
개발언어

Distributed Transaction Coordinator(MSDTC)의 분산 트랜잭션 설정하기

by 엔돌슨 2008. 3. 6.
반응형

관련기술문서가 더 있네

Windows 2003 DTC 설정 완성(?)편
http://www.simpleisbest.net/archive/2005/07/04/173.aspx

INFO: Microsoft DTC가 방화벽을 통해 작동하도록 구성
http://support.microsoft.com/kb/250367/

You receive error 7391 when you run a distributed transaction against a linked server in SQL Server 2000 on a
computer that is running Windows Server 2003
http://support.microsoft.com/kb/329332/en-us

You may receive a 7391 error message in SQL Server 2000 when you run a distributed transaction against a
linked server after you install Windows Server 2003 or Windows XP Service Pack 2
http://support.microsoft.com/kb/839279/en-us (English)
http://support.microsoft.com/kb/873160/ko (korean)


HOWTO: Enable DTC Between Web Servers and SQL Servers Running Windows Server 2003
http://support.microsoft.com/?kbid=555017




트리거내에서 Linked Server에 대한 DML문이 수행되면 이는 두 DBMS에 대한 트랜잭션을

하나의 트랜잭션으로 관리해야 하므로 분산 트랜잭션으로 처리됩니다.

즉, 내부적으로 다음과 같이 수행되는 것입니다.


BEGIN TRAN    -- 서로 다른 DBMS에 대해 이는 BEGIN DISTRIBUTED TRAN으로 동작합니다.

insert test values('222')

insert  [다른아이피].prsdb.dbo.test values(@name)

COMMIT TRAN

Distributed Transaction Coordinator(MSDTC)의 분산 트랜잭션 설정하기

데브피아에 관련 코멘트가 있어서 퍼왓다.

dcomcnfg.exe 찾아가기 귀찮을때 시작->실행->dcomcnfg.exe 라고 해준다.

Windows Server에서는 Distributed Transaction Coordinator(MSDTC)가 분산 트랜잭션을

관리합니다. 따라서, 두 머신에 모두 MSDTC 서비스가 실행중이어야 합니다.

아래 메시지는 현재 D-5DFD28F412A74 머신의 MSDTC 서비스가 시작되지 않았거나 정상

동작하지 않음을 의미합니다.


서버: 메시지 8501, 수준 16, 상태 3, 프로시저 trginsert1, 줄 7

'D-5DFD28F412A74' 서버의 MSDTC를 사용할 수 없습니다.


또한, Windows Server 2003(혹은 XP) 이상에서는 MSDTC 서비스에 대한 보안 강화로

MSDTC에 대한 Network DTC Access를 Enable시켜줘야 합니다.


이는 관리도구 > 구성요소서비스 > 내컴퓨터 > 등록정보에서 MSDTC 의 보안구성에서

아래와 같이 설정하시면 됩니다.



 
사용자 삽입 이미지



두 서버의 MSDTC "Network DTC Access"를 Enable시킨 이후에 다음의 쿼리를 수행해 정상적으로 실행된다면

두 서버간 MSDTC 통신이 정상임을 의미합니다.


BEGIN DISTRIBUTED TRAN

SELECT * FROM <다른IP>.pubs.dbo.titles

COMMIT TRAN