dtcping은 정상인데 dtctester.exe 로 했을때 다음과 같은 에러가 날 경우.
Error:
SQLSTATE=25S12,Native error=0,msg='[Microsoft][SQL Native Client]트랜잭션이 이미
암시적 또는 명시적으로 커밋되거나 중단되었습니다.
'
Error:
SQLSTATE=24000,Native error=0,msg=[Microsoft][SQL Native Client]잘못된 커서 상태
입니다.
Typical Errors in DTC Output When
a. Firewall Has Ports Closed
-OR-
b. Bad WINS/DNS entries
-OR-
c. Misconfigured network
-OR-
d. Misconfigured SQL Server machine that has multiple netcards.
Aborting DTC Transaction
Releasing DTC Interface Pointers
Successfully Released pTransaction Pointer.
다음 두 가지를 생각해 볼 수 있습니다.
1. CID 중복
서버 OS를 클론설치할 경우 MSDTC의 CID가 같아 분산 트랜잭션오류가 나느 경우가 있습니다.
regedit에서 "msdtc"로 찾기를 하면 HKEY_CLASSES_ROOT\CID 밑에 Description이 MSDTC인 CID(GUID)를 찾을 수 있습니다. 이 GUID를 GUID생성기로 생성한 새로운 GUID로 변경 후 서버를 재시작 하면 됩니다.
2. 클러스터링
그래도 문제가 해결되지 않았고 분산 트랜잭션에 참여하는 서버 중에 클러스터링된 서버가 있을 경우 다음 사항을 체크해 봅니다.
분산 트랜잭션에 참여하는 모든 서버의 hosts 파일에는 참여하는 서버의 machine name과 ip가 등록되어 있어야 합니다.
클러스터링에 참여하지 않는 서버에는 특히 hosts 파일에 다음 항목이 추가되어 있어야 합니다.
192.168.xxx.01 cluster01
192.168.xxx.02 cluster02
192.168.xxx.11 vmsql
192.168.xxx.35 vmdtc
192.168.xxx.02 cluster02
192.168.xxx.11 vmsql
192.168.xxx.35 vmdtc
클러스터링으로 묶인 물리적 서버의 호스트들을 등록하고 가상 mssql과 가상 msdtc의 호스트를 각각 등록해야 합니다.



이올린에 북마크하기
Prev
Rss Feed