Windows Server 2003 또는 Windows XP 서비스 팩 2를 설치한 후 분산된 트랜잭션에 연결된 된 서버에 대해 실행할 때 SQL Server 2000에 7391 오류 메시지가 나타날 수 있습니다.

증상

를 SQL Server 인스턴스에 대해 분산된 트랜잭션을 실행 하면 다음과 유사한 오류 메시지가 나타날 수 있습니다.

서버: 메시지 7391, 수준 16, 상태 1, 줄 1
OLE DB 공급자 'SQLOLEDB' 분산된 트랜잭션을 시작할 수 없습니다. 작업을 수행할 수 없습니다. [OLE/DB 공급자 메시지를 반환 했습니다: 지정한 트랜잭션 코디네이터에 새 트랜잭션을 기록할 수 없습니다.] OLE DB 오류 추적 [OLE/DB 공급자 'SQLOLEDB' ITransactionJoin::JoinTransaction 0x8004d00a 반환 됩니다].


이 문제는 다음 조건 중 하나가 참일 경우 발생할 수 있습니다.
  • Microsoft Windows Server 2003 또는 Windows XP 서비스 팩 2 (SP2)는 분산된 트랜잭션을 시작 하는 컴퓨터에 설치 됩니다.
  • Microsoft SQL Server 2000을 실행 하는 원격 컴퓨터에 Microsoft Windows Server 2003 또는 Microsoft Windows XP SP2 설치 하 고 컴퓨터 분산된 트랜잭션을 시작 하는 컴퓨터에 연결 된.

원인

이 문제는 다음 이유 중 하나 이상 때문에 발생합니다.
  • Microsoft 분산 트랜잭션 코디네이터 (MSDTC) 네트워크 트랜잭션을 사용할 수 없게 됩니다.
  • Windows 방화벽은 컴퓨터에서 사용할 수 있습니다. 기본적으로 Windows 방화벽 Microsoft 분산 트랜잭션 코디네이터 (MSDTC) 프로그램을 차단합니다.

    참고: 이 문제는 Windows 방화벽이 해제 된 경우에 발생할 수 있습니다.

해결 방법

중요: 이 섹션, 방법 또는 작업은 레지스트리를 수정하는 방법을 설명하는 단계를 포함합니다. 그러나, 레지스트리를 잘못 수정하면 심각한 문제가 발생할 수 있습니다. 따라서 다음 단계를 주의 깊게 수행해야 합니다. 추가 보호 조치로, 해당 레지스트리를 수정하기 전에 미리 백업하세요. 그런 다음, 문제가 발생할 경우 레지스트리를 복원할 수 있습니다. 레지스트리를 백업 및 복원하는 방법에 대한 자세한 내용은, Microsoft 기술 자료의 다음 문서 번호를 클릭합니다.
322756 백업 및 Windows에서 레지스트리를 복원 하는 방법


이 문제를 해결 하려면 Windows Server 2003 또는 Windows XP s p 2에 설치 되어 있는 컴퓨터에서 다음과이 같이 하십시오.
  1. MSDTC 서비스의 다음 사용자로 로그온 계정이 네트워크 서비스 계정이 있는지 확인 하십시오. 이렇게 하려면, 다음 단계를 수행하십시오.
    1. 시작을 클릭합니다 하 고을 클릭합니다
      실행합니다.
    2. 실행 대화 상자에 입력
      클릭 하 고 Services.msc
      OK.
    3. 서비스 창에서에서 분산 트랜잭션 코디네이터 서비스를 찾습니다
      오른쪽 창에서 이름 을.
    4. 다음 사용자로 로그온 열 아래에서 사용자로 로그온 계정이 네트워크 서비스 인지 로컬 시스템을 참조 하십시오.

      사용자로 로그온 계정이 네트워크 서비스이면 2 단계로 이동 합니다. 사용자로 로그온 계정이 로컬 시스템 계정이 있으면 다음이 단계로 진행 합니다.
    5. 시작을 클릭합니다 하 고을 클릭합니다
      실행합니다.
    6. 실행 대화 상자에 입력
      cmd를 선택한 다음 확인을 누릅니다.
    7. 명령 프롬프트에서 MSDTC 서비스를 중지 하려면 Net stop msdtc 입력 합니다.
    8. 명령 프롬프트에서 입력 Msdtc-제거 MSDTC를 제거 합니다.
    9. 명령 프롬프트에서 레지스트리 편집기를 열려면 regedit 입력 합니다.
    10. 레지스트리 편집기에서 다음 키를 찾습니다.

      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC레지스트리 키입니다.

      이 키를 삭제 합니다.
    11. 레지스트리 편집기를 종료합니다.
    12. 명령 프롬프트에서 입력 Msdtc-설치 MSDTC를 설치 합니다.
    13. 명령 프롬프트에서 MSDTC 서비스를 시작 하려면 Net start msdtc를 입력 합니다.

      참고 MSDTC 서비스의 다음 사용자로 로그온 계정을 네트워크 서비스 계정으로 설정 되어 있는.
  2. 네트워크 트랜잭션을 허용 하려면 MSDTC를 활성화 합니다. 이렇게 하려면, 다음 단계를 수행하십시오.
    1. 시작을 클릭합니다 하 고을 클릭합니다
      실행합니다.
    2. 실행 대화 상자에 입력
      dcomcnfg.exe클릭 하면
      OK.
    3. 구성 요소 서비스 창에서 구성 요소서비스 컴퓨터확장 한 다음 내 컴퓨터를 확장 합니다.
    4. 내 컴퓨터마우스 오른쪽 단추로 클릭 한 다음 속성을 클릭 합니다.
    5. 내 컴퓨터 속성 대화 상자에서 MSDTC 탭에서 보안 구성 을 클릭 합니다.
    6. 보안 구성 대화 상자에서 네트워크 DTC 액세스 확인란을 선택 하려면 클릭 합니다.
    7. 분산된 트랜잭션을이 컴퓨터에서 원격 컴퓨터에서 실행할 수 있도록 하려면 인바운드 허용 확인란을 선택 합니다.를 클릭 합니다.
    8. 분산된 트랜잭션을이 컴퓨터에서 원격 컴퓨터에서 실행할 수 있도록 아웃 바운드 허용 확인란을 선택 하려면 클릭 합니다.
    9. 트랜잭션 관리자 통신 그룹 아래의 인증 필요 없음 옵션을 선택 하려면 클릭 합니다. 클라이언트와 원격 시스템에서 인증 필요 없음을 설정 합니다.
    10. 보안 구성 대화 상자에서 확인을 클릭 합니다.
    11. 내 컴퓨터 속성 대화 상자에서 확인을 클릭 합니다.
  3. MSDTC 프로그램을 포함 하 고 포트 135를 예외로 포함 하도록 Windows 방화벽을 구성 합니다. 이렇게 하려면, 다음 단계를 수행하십시오.
    1. 시작을 클릭한 다음, 실행을 클릭합니다.
    2. 실행 대화 상자에 Firewall.cpl입력 한 다음 확인을 누릅니다
    3. 제어판두 번 클릭
      Windows 방화벽.
    4. Windows 방화벽 대화 상자의 예외 탭에서 프로그램 추가 클릭 합니다.
    5. 프로그램 추가 대화 상자에서 찾아보기 단추를 클릭 한 다음 Msdtc.exe 파일을 찾습니다. 기본적으로 파일에 저장 되는 < 설치 드라이브 >: \Windows\System32 폴더입니다.
    6. 프로그램 추가 대화 상자에서 클릭
      OK.
    7. Windows 방화벽 대화 상자에서 선택을 클릭 하 여
      프로그램 및 서비스 목록에서 msdtc 옵션입니다.
    8. 예외 탭에서 포트 추가 클릭 합니다.
    9. 포트 추가 대화 상자에 135 입력 하면
      포트 번호 텍스트 상자 및 TCP 옵션을 선택 합니다.
    10. 포트 추가 대화 상자에 입력 한 예외 이름을 입력 하면
      이름 텍스트 상자를 클릭 하면
      OK.
    11. Windows 방화벽 대화 상자에서 사용한 프로그램 및 서비스 목록에서 j 단계에 입력 한 예외 이름을 선택 하 고을 클릭합니다
      OK.
  4. Netbios 이름 (도메인 없이: 서버 이름)을 사용 하 여 호스트 서버에 원격 서버 및 원격 서버를 호스트 서버에서 핑 테스트. Microsoft 분산 트랜잭션 코디네이터는 netbios 이름이 아닌 정규화 된 도메인 이름 사용 하 여 서버를 찾습니다. 이름 확인이 실패 하는 경우 분산된 트랜잭션이 실패 합니다. Netbios 이름을 사용 하 여 ping 테스트에 실패 하면 다음 기술 자료 문서를 참조 하십시오.
    172218 Microsoft TCP/IP 호스트 이름 확인 순서

상태

Microsoft는 이 문제가 '적용 대상' 섹션에 나열된 Microsoft 제품의 문제임을 확인했습니다.

자세한 내용

동작을 재현 하는

  1. Windows Server 2003 또는 Windows XP s p 2이 설치 되어 있는 컴퓨터에 로그온 합니다.
  2. 쿼리 분석기를 시작 합니다.
  3. 연결된 된 서버와 Microsoft SQL Server 2000을 실행 하는 원격 컴퓨터를 추가 합니다. 이렇게 하려면 쿼리 분석기에서 다음 Transact SQL 문을 실행 합니다.
    EXEC sp_addlinkedserver  '<remote_server>',  N'SQL SERVER'GO

    참고: Remote_server 연결 된 서버로 구성 해야 하는 컴퓨터의 이름으로 대체 합니다.
  4. 이 컴퓨터와 원격 컴퓨터 간에 분산된 트랜잭션을 실행 합니다. 이렇게 하려면 쿼리 분석기에서 다음 Transact SQL 문을 실행 합니다.
    SET xact_abort ON GO
    USE pubs
    GO
    BEGIN DISTRIBUTED TRANSACTION
    SELECT * FROM <remote_server>.pubs.dbo.authors
    COMMIT TRAN
    GO

    "현상" 절에 나와 있는 오류 메시지가 나타날 수 있습니다.

참조

SQL Server 2000과 함께 사용 하기 위해 Windows XP 서비스 팩 2를 구성 하는 방법에 대 한 자세한 내용은 Microsoft 기술 자료의 다음 문서 번호를 클릭 합니다.

841249 SQL Server 함께 사용할 Windows XP 서비스 팩 2를 구성 하는 방법

속성

문서 ID: 839279 - 마지막 검토: 2017. 2. 7. - 수정: 1

피드백