본 게시물은 개인적인 의견으로 작성되었으니 절대적인 정보가 아닐 수 있습니다. 참고만 하시고 궁금한 사항이 있으시면 연락주세요.

티스토리 뷰

SQL Server - CATEGORY

MSDTC 재 설치하는 방법

AWS-in 2016. 2. 11. 16:57

요즘 가상머신들이 판을 치고 있다. 간혹 실수로 OS 템플릿을 sysprep 안돌리고 생성하는 머신들이 있을 것이다.

이런 경우에 Machine SID(Security Identifier) 가 중복이 된다.

   

SID가 중복이 되면 윈도우 서비스에 문제가 많이 발생한다. 이런 경우에는 포멧이 답이다. 깔끔하게

이런 상황에 MSDTC 서비스도 문제가 발생한다. 이벤트로그에 아래와 같이 로그에서 확인이 가능하다.

   

The local MS DTC detected that the MS DTC on SERVER has the same unique identity as the local MS DTC. This means that the two MS DTC will not be able to communicate with each other. This problem typically occurs if one of the systems were cloned using unsupported cloning tools. MS DTC requires that the systems be cloned using supported cloning tools such as SYSPREP. Running 'msdtc -uninstall' and then 'msdtc -install' from the command prompt will fix the problem. Note: Running 'msdtc -uninstall' will result in the system losing all MS DTC configuration information.

   

위 상황에 SQL 분산 트랜잭션도 처리가 안된다.

해결하는 방법은 MSDTC를 삭제하고 재 설치를 하게 되면 해결이 가능할 수 있다.

   

MSDTC 재 설치하는 방법을 알아보자. Windows Server 2003 , 2008이 조금 틀리다.

   

Windows Server 2008 에서 MSDTC 서비스 재 설치하는 방법을 알아보자.

1. MSDTC 서비스 (Distributed Transaction Coordinator )를 중지한다. 중지하기 전에 시작유형을 확인해 두자.

기본은 자동(지연되시작, Delayed Start)이다.

   

2. MSDTC 와 관련된 레지스트리 값을 확인하자. MSDTC를 삭제를 하게 되면 해당 위치의 값들이 모두 삭제가 되게 된다.

단, "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC" 이 값은 유지된다.

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\MSDTC

HKEY_CLASSES_ROOT\CID

HKEY_CLASSES_ROOT\CID.Local

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC

   

   

   

3. 관리자권한으로 명령프롬프트 실행하여 "msdtc -uninstall" 을 실행한다.

   

삭제를 하면

서비스에서 "Distributed Transaction Coordinator " 삭제된다.

레지스트리에서는

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\MSDTC

HKEY_CLASSES_ROOT\CID

HKEY_CLASSES_ROOT\CID.Local

모두 삭제되지만 "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC" 여기는 삭제가 안된다. 수동으로 삭제해준다.

   

여기서 Windows 2003 일 경우에는 "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\Setup" 을 Export 해두자.

   

4. 관리자권한으로 명령프롬프트 실행하여 "msdtc -install" 을 실행한다.

   

완료되면 위에서 언급된 레지스트리들이 새로 생성이 된다.

서비스에서도 새로 생성이 되지만 시작유형은 수동으로 되어 있다. 이 부분을 기존의 설정(자동(지연된시작)대로 변경하자.

   

   

여기서 Windows 2003 일 경우에는 "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\Setup" 을 Import하자.

   

5. MSDTC 로그를 재 생성하자. "msdtc -resetlog" 을 실행하자. 수정일이 업데이트가 된다.

   

   

6. 서비스 "Distributed Transaction Coordinator" 를 시작 유형이 자동(지연된시작) 인지 확인 후 서비스를 재 시작해준다.

MSDTC 보안구성을 재 설정 후 실제 SQL Server 에서 분산트랜잭션이 정상동작 하는지 확인 후 완료한다.

   

[참고문서]

Disaster Recovery for MSDTC on Windows Server 2003 and 2008

http://blogs.msdn.com/b/distributedservices/archive/2009/04/01/instructions-to-reinstall-the-microsoft-distributed-transaction-coordinator-msdtc-service.aspx

   

   

댓글
최근에 올라온 글
최근에 달린 댓글
글 보관함
Total
Today
Yesterday