관리 메뉴

why don't do your best

Windows Server 2003에서 MSDTC 설정하기 본문

Windows

Windows Server 2003에서 MSDTC 설정하기

빅셔 2010. 5. 28. 11:09

Windows Server 2003에서 MSDTC 설정하기

 

윈도우 서버 2003은 강력한 보안기능을 기본으로 하여 보다 특화된 서비스들을 실행시키는 서버 OS이므로 Windows XP / 2000계열과는 보안상 제약사항이 발생하고 있다.

 

주요원인

Windows 2003 기본 인스톨한 경우 > 분산트랜잭션에 관한 설정이 안됨.

사용되는 네트워크에 방화벽을 설치된 경우 > MS DTC에서 사용되는 포트가 차단.

 

아래의 방법을 단계적으로 적용하여 분산 트랜잭션을 테스트한다. 또한 MS DTC관련 설정 후 Windows를 반드시 리부팅한다.

 

주요증상

--실행SQL

BEGIN DISTRIBUTED TRAN

SELECT    *

FROM    Linked_SVR.pubs.dbo.employee

COMMIT TRAN

 

--실행결과

서버: 메시지 7391, 수준 16, 상태 1, 줄 2

OLE/DB 공급자 'SQLOLEDB'이(가) 분산 트랜잭션을 시작할 수 없으므로 작업을 수행할 수 없습니다.

[OLE/DB provider returned message: 지정한 트랜잭션 코디네이터에 새 트랜잭션을 기록할 수 없습니다. ]

OLE DB 오류 추적 [OLE/DB Provider 'SQLOLEDB' ITransactionJoin::JoinTransaction returned 0x8004d00a].

 

  1. 시스템 관리자에게 서버에 자신의 IP와 Hostname – 컴퓨터이름 – 을 등록해주기를 요청한다.
  2. 자신의 시스템에도 Hosts파일에 서버의 IP와 Hostname을 등록한다.
    1. 명령프롬프트를 실행하여
    2. "cd %SystemRoot%\System32\Drivers\Etc" 폴더로 이동하여
    3. "notepad hosts" 라고 실행한다.
    4. 파일의 제일마지막에 다음과 같은 방식으로 서버의 IP와 hostname을 등록한다.

      예) 147.6.48.193        DEVDB2    # 개발DB서버2

  3. 자신의 컴퓨터의 네트워크 환경에서 Firewall사용을 un-check한다.

 

  1. 분산 트랜잭션이 이루어지는 양서버의 MS DTC 실행여부를 확인
    1. 제어판 > 프로그램 추가/삭제 > Windows 구성요소 추가/제거 > 응용 프로그램 서버 선택 후 [자세히(D)]버튼을 실행한다.
    2. 응용 프로그램 서버의 하위 구성 요소에서 [네트워크 COM+ 엑세스 사용][네트워크 DTC 엑세스 사용]가 체크 되어있는지 확인한다. 만일 하나라도 안되어 있다면 체크하여 설치하도록 한다.

     

     

    1. 관리도구 > 서비스 > Distributed Transaction Coordinator 의 상태가 시작됨으로 되어있는지 확인하고, 그렇지 않으면 시작해준다.
  2. 컴퓨터의 네크워크 환경 설정 점검
    1. 제어판 > 네트워크 연결 > 사용중이 네트워크 연결을 속성창을 실행한다.
    2. 일반탭 – [인터넷프로토콜(TCP/IP)]의 속성창을 실행 – [고급(V)]버튼을 눌러 [고급TCP/IP 설정] 창 실행–[WINS]탭에서 [NetBIOS 설정]란을 기본값(F)으로 체크한다.

     

    1. 고급탭 - 인터넷 연결 방화벽을 체크를 해지한다.

     

    1. hosts파일과 lmhosts 파일을 설정한다.

      분산트랙잭션이 이루어지는 양쪽 서버의 HOST명과 IP를 맵핑해준다. 설정후 PING을 통해 확인한다.

    ★ 위 같은 보안에 있어서 위험하므로 네트워크 통한 DTC 엑세스는 내부망을 이용하는 것이 안전하다.

     

  3. DTCPing Tool을 이용하여 MS DTC 정상 동작여부 점검
    1. 분산트랜잭션이 이루어지는 각 서버에 DTCPing Tool을 설치한다.
    2. 양쪽 서버에 DTCPing.exe를 실행한다.
    3. Server1에서 Server2로 DTCPing을 실행하여 정상인지 점검한다.
    4. Server2에서 Server2로 DTCPing을 실행하여 정상인지 점검한다.

      - 상세내용 참조 및 DTCPing Tool 다운로드

      http://support.microsoft.com/default.aspx?scid=kb;ko;306843

     

     

  4. 레지스트 값 설정
    1. Regedit.exe 를 실행한다.
    2. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC > 새로만들기(N)> DWORD를 선택한다. 이름은 TurnOffRpcSecurity설정하고 데이터는 1로 설정한다.

     

     

    1. 레지스트리편집기를 닫고, 명령프롬프트로 돌아와 아래의 명령을 입력한다.
    2. "net stop msdtc && net start msdtc" 을 입력한다.

     

    1. MS DTC 설정 변경.
      1. 관리도구 > 구성 요소 서비스 > 내 컴퓨터 > 속성 창을 실행한다.

       

      1. 속성 창에서 MS DTC 탭으로 [보안 구성(I)]버튼을 누른 다음 아래와 같이 설정한다.

      - DTC 로그온계정 - 계정(U)은 NT AUTHORITY\NetworkService 로 설정한다.

      1. 위 설정을 마친 후 Windows를 반드시 리부팅한다.
      2. 이제 분산트랜잭션을 위한 Windows Server 2003의 구성이 완료되었다.

     

    서비스팩 1 적용 후 MSDTC 설정 하기

     

     

     

    1. Windows XP 또는 Windows Server 2003에서 Distributed Transaction Coordinator 서비스를 시작하려고 하면 오류 코드 -1073737712가 나타날 수 있다

    현상

    Microsoft Windows XP 또는 Microsoft Windows Server 2003에서 Microsoft Distributed Transaction Coordinator(MS DTC) 서비스를 시작하려고 하면 다음과 같은 오류 메시지가 나타날 있습니다.

    로컬 컴퓨터의 Distributed Transaction Coordinator 시작하지 못했습니다. 자세한 정보는 시스템 이벤트 로그를 참조하십시오. Microsoft 서비스가 아닌 경우, 서비스 공급업체에 문의할 -1073737712 서비스 특정 오류 코드를 참조하십시오.

    문제가 발생하면 응용 프로그램 로그에 다음과 같은 오류 이벤트가 기록됩니다.

    이벤트 종류: 오류
    이벤트 원본: MSDTC
    이벤트 범주: LOG
    이벤트 ID: 4163
    설명: MS DTC 로그 파일을 찾을 없습니다. MS DTC 조정한 모든 리소스 관리자에 확실하지 않은 트랜잭션이 없음을 확인한 다음, "msdtc -resetlog" 실행하여 로그 파일을 만드십시오.

    이벤트 종류: 오류
    이벤트 원본: MSDTC
    이벤트 범주: TM
    이벤트 ID: 4185
    설명: MS DTC 트랜잭션 관리자를 시작하지 못했습니다. LogInit 0x5 오류를 반환했습니다.

    또한 다음과 같은 오류 이벤트가 시스템 로그에 기록될 수도 있습니다.

    이벤트 종류: 오류
    이벤트 원본: Service Control Manager
    이벤트 범주: 없음
    이벤트 ID: 7024
    설명: Distributed Transaction Coordinator 서비스가 서비스 특정 오류 3221229584(0xC0001010) 때문에 종료되었습니다.

    원인

    문제는 MS DTC 서비스가 %windir%\System32\Msdtc\Msdtc.log 파일에 액세스할 없기 때문에 발생합니다.

    해결 방법

    문제를 해결하려면 필요에 따라 다음 방법을 아래에 나와 있는 순서대로 사용하십시오.

    방법 1: MS DTC 로그 다시 만들기

    MS DTC 로그를 다시 만든 다음 서비스를 다시 시작합니다. 이렇게 하려면 다음과 같이 하십시오.

    1. 

    시작, 실행 차례로 누르고 cmd 입력한 다음 확인 누릅니다.

    2. 

    명령 프롬프트에서 다음 명령을 입력한 Enter 키를 누릅니다.

    msdtc -resetlog

    경고 msdtc -resetlog 명령은 잘못 사용할 경우 데이터 손상을 일으킬 있습니다. 명령을 실행할 때는 보류 중인 트랜잭션이 없는지 확인하십시오.

    3. 

    다음 명령을 입력한 Enter 키를 누릅니다.

    net start msdtc

    방법 2: MS DTC 서비스의 로그온 계정 권한 설정

    방법 1 문제가 해결되지 않으면 Msdtc.log 파일에 대한 읽기 쓰기 권한을 MS DTC 서비스의 로그온 계정에 부여하십시오. 이렇게 하려면 다음과 같이 하십시오.

    1. 

    시작, 실행 차례로 누르고 cmd 입력한 다음 확인 누릅니다.

    2. 

    명령 프롬프트에서 control admintools 입력한 Enter 키를 누릅니다.

    3. 

    서비스 누릅니다.

    4. 

    서비스 창에서 Distributed Transaction Coordinator 찾습니다.

    5. 

    다음 사용자로 로그온 열에서 계정 이름을 확인합니다.

    참고 MS DTC 서비스의 기본 로그온 계정은 네트워크 서비스 계정입니다.

    6. 

    Windows 탐색기를 시작한 다음 %windir%\System32\Msdtc 폴더를 엽니다.

    7. 

    Msdtc.log 파일을 마우스 오른쪽 단추로 누른 다음 속성 누릅니다.

    8. 

    보안 탭을 누릅니다.

    9. 

    5단계에서 확인한 로그온 계정 이름을 누릅니다. 예를 들어, NETWORK SERVICE 계정 이름을 누릅니다.

    10. 

    사용 권한 창에서 다음 권한에 대해 허용 확인란을 선택합니다.

     

    읽기 실행

     

    읽기

     

    쓰기

    11. 

    확인 누릅니다.

    12. 

    눌러 보안 경고에 동의합니다.

    13. 

    서비스 창에서 Distributed Transaction Coordinator 마우스 오른쪽 단추로 누른 다음 시작 누릅니다.

     

    --------------------------------------------------------------------=> MSDTC 설정이 되지 않았을 때 발생하는 오류메시지

    1. System.Transactions.TransactionManagerCommunicationException: 분산 트랜젝션 관리자(MSDTC)의 네트워크 액세스가 활성화되지 않았습니다. 구성 요소 서비스 관리 도구를 사용하여 MSDTC 보안 구성에서 DTC의 네트워크 액세스를 활성화하십시오. ---> System.Runtime.InteropServices.COMException (0x8004D024): 트랜잭션 관리자가 원격/네트워크 트랜잭션에 대한 지원을 할 수 없습니다. (예외가 발생한 HRESULT: 0x8004D024)

     

    1. System.Transactions.TransactionManagerCommunicationException: 기본 트랜잭션 관리자와 통신하지 못했습니다. ---> System.Runtime.InteropServices.COMException (0x80004005): COM 구성 요소 호출에서 HRESULT E_FAIL 오류가 반환되었습니다.

'Windows' 카테고리의 다른 글

ftp iis관리자권한설정  (0) 2012.01.31
RunDll32.exe 활용  (0) 2011.12.14
[네트워크]SNMP란  (0) 2010.09.15
Windows 7 IIS 설정  (0) 2010.09.09
윈도우7 설치시 administrator 계정만으로 바로 설치하기!  (0) 2010.09.09
Comments