Step by Step: 트랜잭션 오류에 대한 MSDTC 설정 확인하는 일반적인 방법

기술 자료: 976963 - 이 문서가 적용되는 제품 보기.
그림 축소그림 확대
Step by Step
Step by Step 기술 자료 모두 보기
Twitter로 보내기  Facebook으로 보내기  me2DAY로 보내기  

모두 확대 | 모두 축소

개요

Microsoft SQL Server 또는 BizTalk Server와 같은 리소스 매니저들은 분산 트랜잭션을 처리하기 위해서 Microsoft Distributed Transaction Coordinator(MSDTC)를 이용합니다. 따라서 MSDTC를 적절하게 구성, 설정하지 않는 경우 아래와 같은 분산 트랜잭션 관련 오류가 발생할 수 있습니다.
  • 지정된 트랜잭션 코디네이터에 새 트랜잭션을 기록할 수 없습니다. ("New transaction cannot enlist in the specified transaction coordinator".)
  • 트랜잭션이 이미 암시적으로 또는 명시적으로 커밋되거나 중단되었습니다. ("The transaction has already been implicitly or explicitly committed or aborted")

이 문서에서는 MSDTC에 의한 분산 트랜잭션 처리 문제가 발생한 경우 MSDTC 설정을 확인하는 방법에 대해 설명합니다.

NetBIOS 이름 확인 작업에 대한 점검

두 머신 간의 MSDTC 트랜잭션이 성공적으로 처리되기 위해서는 반드시 두 머신 간의 올바른 컴퓨터 IP 주소에 대한 NetBIOS 이름 확인(Name resolution)이 되어야 합니다. 다음과 같은 절차를 통해서 두 머신 간의 NetBIOS 이름 확인 작업을 입증할 수 있습니다.
  1. 먼저, 각 컴퓨터의 NetBIOS 이름을 다음과 같이 확인합니다.
    1. [내 컴퓨터]를 마우스 오른쪽 단추로 클릭하여 시스템 속성 화면을 표시합니다. [컴퓨터 이름]을 클릭하여 해당 컴퓨터에 속한 전체 컴퓨터 이름을 확인합니다.

      Windows 2003 및 Windows XP의 경우:
      그림 축소그림 확대
      00 01


      Windows 2008 및 Windows Vista의 경우:
      그림 축소그림 확대
      00 02


    2. 확인된 전체 컴퓨터 이름의 표시된 첫 번째 위치 부분이 NetBIOS 이름입니다. 예를 들어, mycomputer.company.doamin.com의 전체 컴퓨터 이름에서 mycomputer에 해당합니다.
    3. 또는 명령창에서 간단히 hostname 명령으로 확인할 수 있습니다.
      그림 축소그림 확대
      00 03


  2. 각 컴퓨터와 관련 있는 IP 주소를 다음과 같이 확인합니다.
    1. 명령 창에서 다음과 같은 명령을 수행합니다.
      ipconfig /all

      그림 축소그림 확대
      00 04


    2. 명령 창에서 출력되는 결과를 통해 해당 컴퓨터와 관련된 IP 주소를 확인할 수 있습니다.

  3. 각 컴퓨터의 NetBIOS 이름과 IP 주소의 이름 확인 작업은 다음과 같이 확인합니다.
    1. 클라이언트에 해당하는 컴퓨터의 명령 창에서 아래를 수행합니다.
      ping <서버에 해당하는 컴퓨터의 NetBIOS 이름>

      그림 축소그림 확대
      00 05


    2. 서버에 해당하는 컴퓨터의 명령 창에서 다음과 같이 수행합니다.
      ping <클라이언트에 해당하는 컴퓨터의 NetBIOS 이름>

      그림 축소그림 확대
      00 06


    3. ping 명령의 결과로 서버에서 또는 클라이언트 컴퓨터에서 상대방 컴퓨터의 NetBIOS 이름과 관련된 IP주소가 정상적으로 얻어지는 지를 확인합니다.
    4. 또한 검증을 위해서 클라이언트에 해당하는 컴퓨터에서 서버의 NetBIOS 이름에 대한 역 이름 확인(Reverse Name Lookup) 작업을 다음과 같이 합니다.
      ping -a <서버 컴퓨터의 IP 주소>

      그림 축소그림 확대
      00 07


    5. 서버에 해당하는 컴퓨터에서 클라이언트 컴퓨터의 NetBIOS 이름에 대한 역 이름 확인 작업을 다음과 같이 합니다.
      ping -a <클라이언트 컴퓨터의 IP 주소>

      그림 축소그림 확대
      00 08


    6. 결과로 정확한 NetBIOS 이름이 출력되거나 NetBIOS 이름과 관련된 fully qualified domain name이 출력되어야 합니다.

만일, NetBIOS 이름 확인 작업에서 문제가 있다면, DNS 서버, NetBIOS 이름 서버(Name Server), HOSTS 파일 또는 LMHOSTS 파일에 해당 정보를 적절히 등록하여 문제를 해결하도록 합니다.

MSDTC 보안 구성에 대한 점검 (Windows Server 2003 SP1, Windows XP SP2, Windows Server 2008, Windows Vista)

Windows Server 2003 SP1, Windows XP SP2, Windows Server 2008, Windows Vista에서는 보안 강화 정책으로 인하여 MSDTC 보안에 대해 아래와 같은 설정을 지정할 수 있습니다. 권고 사항을 확인하여 MSDTC의 보안 구성이 시스템의 환경에 적절한지 여부를 판단할 수 있습니다. 해당 설정 확인을 위해서 다음과 같이 접근할 수 있습니다.

Windows 2003 SP1 및 Windows XP SP2인 경우:
  1. [시작], [실행]을 차례대로 클릭하고 dcomcnfg를 입력한 후 Enter 키를 누릅니다.
    그림 축소그림 확대
    00 09


  2. 콘솔 루트의 구성 요소 서비스 하위에 컴퓨터를 클릭하여 확장합니다.
  3. 컴퓨터 하위의 [내 컴퓨터]를 마우스 오른쪽 단추로 클릭하여 [속성]을 클릭하면 내 컴퓨터의 등록 정보를 확인할 수 있습니다.
    그림 축소그림 확대
    00 10


  4. 내 컴퓨터 등록 정보 화면에서 [MSDTC]를 클릭합니다. 하단의 트랜잭션 구성[보안 구성]을 클릭합니다.
    그림 축소그림 확대
    00 11


  5. 보안 구성 화면이 표시됩니다.
    그림 축소그림 확대
    00 12


    Windows 2008 및 Windows Vista 인 경우:
    1. [시작], [실행]을 차례대로 클릭하고 dcomcnfg를 입력한 후 Enter 키를 누릅니다.
      그림 축소그림 확대
      00 13


    2. 콘솔 루트의 구성 요소 서비스 하위에 컴퓨터를 클릭하여 확장합니다.
    3. 컴퓨터 하위의 내 컴퓨터를 다시 확장한 후 [Distributed Transaction Coordinator]를 클릭합니다.
    4. 로컬 DTC를 마우스 오른쪽 단추로 클릭한 다음 [속성]을 클릭합니다.
      그림 축소그림 확대
      00 14


    5. [보안]을 클릭합니다.
      그림 축소그림 확대
      00 15



보안 구성에 대한 설정은 아래 표의 권고사항을 따릅니다.
표 축소표 확대
구성 옵션기본값권고사항
네트워크 DTC 액세스 (Network DTC Access)DisabledEnabled
원격 클라이언트 허용 (Allow Remote Clients)DisabledDisabled
원격 관리 허용 (Allow Remote Administration)DisabledDisabled
인바운드 허용(Allow Inbound)DisabledEnabled
아웃바운드 허용(Allow Outbound)DisabledEnabled
상호 인증 필요(Mutual Authentication Required)Enabled만일, 모든 원격 머신들이 Windows Server 2003 SP1 또는 Windows XP SP2 이상의 OS에서 구동되고 있으며, 상호 인증 필요로 설정되어 있을 경우에 설정할 수 있습니다.
들어오는 호출자 인증 필요 (Incoming Caller Authentication Required)Disabled만일, 클러스터 시스템에서 MSDTC를 구성하는 경우 설정할 수 있습니다.
인증 필요 없음 (No Authentication Required)Disabled원격의 머신들이 Windows 2003 SP1 또는 Windows XP SP2 이전의 OS에서 구동되는 경우에는 반드시 해당 옵션을 설정합니다.
XA 트랜잭션 사용 (Enable XA Transactions)DisabledXA 기반의 트랜잭션 관련 시스템과 통신을 위해서 설정합니다.


표 축소표 확대
그림 축소그림 확대
주의사항

상위의 보안 구성 설정을 변경했을 경우 MSDTC 를 반드시 재 시작 해야만 합니다. 간혹, MSDTC 의 재 시작 이후에도 설정이 변경되지 않을 경우에는 시스템을 리부팅하여 설정 적용을 확인하도록 합니다.


표 축소표 확대
그림 축소그림 확대
주의사항

MSDTC의 보안 구성에 상호 인증 필요 또는 들어오는 호출자 인증 필요로 구성이 되었다면, 클라이언트 컴퓨터의 계정은 반드시 "네트워크에서 이 컴퓨터 액세스(Access this computer from the network)"의 사용자 권한을 가져야만 합니다. 만일, 그렇지 않거나 "네트워크에서 이 컴퓨터 액세스 거부(Deny access to this computer from network)"의 사용자 권한을 포함하고 있다면, 클라이언트 와 서버간의 DTC 통신은 실패할 것입니다.

네트워크에서 이 컴퓨터 액세스 권한에 대한 사용자 권한 확인은 아래와 같은 절차를 따릅니다.
  1. [시작], [실행]을 차례대로 클릭하고 gpedit.msc를 입력한 후 로컬 그룹 정책 편집기를 엽니다.
    그림 축소그림 확대
    00 16


  2. 로컬 그룹 정책 편집기에서 컴퓨터 구성의 Windows 설정에 보안 설정을 확장하고, 그 하위의 로컬 정책에 사용자 권한 할당을 클릭하면, 정책을 확인할 수 있습니다.
    그림 축소그림 확대
    00 17


  3. 정책 중 [네트워크에서 이 컴퓨터 액세스]를 클릭하여 원하는 사용자 또는 그룹이 추가되어 있는 지 확인할 수 있습니다.
    그림 축소그림 확대
    00 18


  4. 만일, 사용자가 추가되어 있지 않다면, 사용자 또는 그룹 추가를 통해서 사용자를 추가할 수 있습니다.

방화벽을 사이에 두고 MSDTC가 통신하는 경우에 대한 점검

네트워크를 통한 MSDTC의 통신은 RPC 통신을 기반으로 합니다. 방화벽을 사이에 두고 MSDTC가 통신을 해야 한다면, RPC 동적 포트를 할당하고, 방화벽에서 해당 하는 포트를 열어주는 것이 필요합니다. 그렇지 않으면, 1024번 포트 이상의 포트를 무작위로 사용하기 때문에 방화벽에서 해당 포트를 제어하기 어렵습니다. 그러므로, 기본 RPC 포트 135외에 추가적으로 RPC 동적 포트를 할당하여 방화벽에서 지정된 포트를 열어 주는 것이 필요합니다.

RPC 동적 포트를 할당하는 방법
  1. 다음의 키 하위에 Internet 키를 추가합니다.
    HKEY_LOCAL_MACHINE\Software\Microsoft\Rpc
  2. Internet 키 아래에 "Ports" (MULTI_SZ), "PortsInternetAvailable" (REG_SZ), "UseInternetPorts" (REG_SZ)를 추가합니다. 5000번에서 5100 번까지의 RPC 동적 포트를 설정하는 예는 아래와 같습니다.
    Ports: REG_MULTI_SZ: 5000-5100
    
    PortsInternetAvailable: REG_SZ: Y
    UseInternetPorts: REG_SZ: Y

    그림 축소그림 확대
    00 19


  3. 설정 후에 서버를 리부팅합니다.
표 축소표 확대
그림 축소그림 확대
주의사항

5000번 이상의 포트를 지정해야 다른 애플리케이션에서 사용하는 포트로 인하여 충돌이 발생하지 않을 수 있으며, 100개 이상의 포트를 여는 것을 권고합니다. MSDTC만 RPC를 사용하는 것이 아니라 몇몇 시스템 서비스에서도 통신을 위해 RPC 포트를 사용하기 때문입니다.


표 축소표 확대
그림 축소그림 확대
팁

상위의 설정은 dcomcnfg.exe를 통해서 설정할 수 있습니다.


  1. 구성 요소 서비스를 실행하고 내 컴퓨터의 속성 화면을 엽니다.
    그림 축소그림 확대
    00 20


  2. 내 컴퓨터의 속성 화면에서 [기본 프로토콜]을 클릭하여 COM 인터넷 서비스 속성 창을 엽니다.
    그림 축소그림 확대
    00 21


  3. COM 인터넷 서비스 속성 화면에서 [추가]를 클릭하여 임의의 포트 범위를 추가할 수 있습니다.
    그림 축소그림 확대
    00 22


    그림 축소그림 확대
    00 23


  4. 레지스트리 목록에서 확인하여 정상적으로 RPC 포트가 추가되었는지 확인합니다.



Windows 방화벽이 수행되는 경우에 대한 점검

Windows 방화벽이 다른 컴퓨터와의 MSDTC 통신을 막을 수 있습니다. 그러므로, Windows 방화벽이 실행중인 컴퓨터에서는 Windows 방화벽 예외 목록에 msdtc.exe를 추가해야만 합니다.
  1. [시작], [실행]을 차례대로 클릭하고 firewall.cpl를 실행합니다.
    그림 축소그림 확대
    00 24


  2. [예외]를 클릭한 다음 [프로그램 추가]를 클릭합니다.
    그림 축소그림 확대
    00 25


  3. [찾아보기]를 클릭하여 %system32%\msdtc.exe 를 찾아 추가합니다. [범위 변경]을 클릭합니다.
    그림 축소그림 확대
    00 26


  4. 범위 변경 화면에서 MSDTC 통신을 위한 컴퓨터들의 접근을 적절히 허용하도록 구성합니다.
    그림 축소그림 확대
    00 27


    그림 축소그림 확대
    00 28


  5. 명령창에서 net stop msdtc를 실행하여 DTC 서비스가 종료된 후에 net start msdtc를 수행하여 다시 시작합니다.
    그림 축소그림 확대
    00 29


Windows XP SP2에서의 EnableAuthEpResolution과 RestrictRemoteClients 레지스트리 키 설정 점검

Windows XP SP2에서의 보안 강화로 인하여 RPC 인터페이스에 대한 인증된 호출을 요구하게 되었습니다. 이는 레지스트리 키인 RestrictRemoteClientsEnableAuthEpResolution에 의해서 종속적입니다. 그러므로, 원격 컴퓨터에서 Windows XP SP2 컴퓨터의 RPC 인터페이스 호출에 대한 접근 권한 오류와 같은 문제가 발생할 수 있습니다. 이를 예방하기 위해서는 아래와 같은 설정이 필요합니다.
  1. [시작], [실행]을 차례대로 클릭하고 regedit.exe를 실행하여 HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT로 이동합니다.
  2. RPC 키 아래에 다음과 같은 DWORD 목록을 생성합니다. 만일, RPC 키가 존재하지 않는 경우, 새롭게 생성합니다.

    표 축소표 확대
    DWORD 목록기본값권고값
    EnableAuthEpResolution0 (disabled)1
    RestrictRemoteClients1 (enabled)0


    그림 축소그림 확대
    00 30


  3. 레지스트리 편집기를 닫습니다.
  4. MSDTC 서비스를 재시작합니다.

의견 보내기

표 축소표 확대
그림 축소그림 확대
의견 보내기

Microsoft 고객지원 사이트에서는 고객님의 소리를 귀담아 듣습니다. 아래 의견 보내기로 소중한 의견 보내주시기 바랍니다.

속성

기술 자료: 976963 - 마지막 검토: 2013년 9월 30일 월요일 - 수정: 1.3
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft Windows XP Service Pack 2
  • Microsoft Windows XP Service Pack 3
  • Microsoft Windows Server 2003 Service Pack 1
  • Microsoft Windows Server 2003 Service Pack 2
  • Windows Vista Enterprise
  • Windows Vista Business
  • Windows Vista Ultimate
  • Windows Server 2008 Enterprise
  • Windows Server 2008 Standard
키워드:?
kbhowto kbstepbystep KB976963

피드백 보내기

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com