MSDTC Troubeshooting~ Windows debugging

MSDTC는 기본적으로 RPC를 사용하여 통신을 합니다. 그러므로, 방화벽이나 최근 XPSP2나 Windows 2003 SP1에서 와 같은 보안 Issue에 민감할 수 밖에 없습니다.

분산트랜잭션과 관련한 Issue가 발생한다면,

1. MSDTC Security setting이 적절히 설정이 되어 있는 지 Check합니다. (New functionality in the Distributed Transaction Coordinator service in Windows Server 2003 Service Pack 1 and in Windows XP Service Pack 2)

2. MSDTC가 방화벽에 영향을 받고 있는 지 확인합니다. RPC통신을 기본적으로 이용하기 때문에 135 port 외에 1024 이상의 임의의 port를 동적으로 할당받아 사용합니다. 그러므로, 방화벽 환경에서는 정상적으로 동작하기가 어렵습니다.

3. DTC를 사용하는 두 machine사이에서 NetBios name에 의한 Ping이 되는 지 확인합니다. machine name으로 쌍방향 ping이 되지 않는 다면, system32driversetchosts 파일을 이용하여 machine name으로 ping이 될 수 있도록 합니다.

4. 간혹, MSDTC에 대한 CID값(HKEY_CLASSES_ROOTCID) 이 동일한 경우가 있습니다. 2대의 machine을 복제한경우 발생할 수 있습니다. 이와같은 경우는 DTC가 정상적으로 동작하지 않습니다.

를 Check하십시오, 해당 내용은 문서:MS DTC 방화벽 문제를 해결하는 방법 - 를 확인하시면 자세히 알 수 있습니다.

외에도, DTCTester는 Transaction 관련 DTC를 Check할 수 있는 Tool입니다.

간혹, 방화벽때문에 고정 Port를 설정한 경우나 다른 여타의 Application으로 인한 Network Port Leak이 발생하는 경우, Port의 부족으로 인한 Endpoint Mapper를 얻을 수 없어서 문제가 발생할 수도 있습니다. 이 경우에는 www.sysinternals.com의 tcp viewer나 netstat (-na) command 명령을 사용하여 Port Leak을 확인할 수 있습니다.

기타, SQL Server와의 transaction 처리시 예기치 않은 Aborting으로 인한 Transaction오류가 발생할 수 있습니다. 이 부분의 Troubleshooting을 위해서는 MSDTC가 제공하는 DTCTrace 기능을 이용하여 trace log을 수집하여 aborting이 발생한 부분을 Check해 볼 수도 있습니다. 관련해서는 문서 : http://windowssdk.msdn.microsoft.com/en-us/library/ms678891.aspx를 참조하십시오.

덧글

댓글 입력 영역