문제

이것이 유효한 질문입니까?MSTDC를 사용하는 .NET Windows 앱이 있는데 예외가 발생합니다.

System.Transactions.TransactionManagerCommunicationException:MSDTC(분산 트랜잭션 관리자)에 대한 네트워크 액세스가 비활성화되었습니다.컴포넌트 서비스 관리 도구를 사용하여 MSDTC의 보안 구성에서 네트워크 액세스에 대한 DTC를 활성화하십시오.트랜잭션 관리자는 원격/네트워크 트랜잭션에 대한 지원을 비활성화했습니다.(HRESULT의 예외:0x8004d024)에서 System.Transactions.oletx.idtcproxyshimfactory.receivetransaction (uint32 propgationtokensize, byte [] propgationtoken, intptr manageedidentifier, guid & transactionIntifier, oletxtransactionisolationLevel, ItransactionShim & transactionshim) ....

나는 팔로우했다 MSDTC를 활성화하기 위한 Kbalertz 가이드 앱이 설치된 PC에서는 계속 오류가 발생합니다.

이것이 데이터베이스 문제인지 궁금합니다.그렇다면 어떻게 해결할 수 있나요?

올바른 솔루션이 없습니다

다른 팁

Windows Server 2008 r2 및 Windows Server 2012 R2에 이것을 사용하십시오.

  1. 딸깍 하는 소리 시작, 클릭 달리다, 유형 dcomcnfg 그런 다음 클릭하세요. 좋아요 열기 위해 구성요소 서비스.

  2. 콘솔 트리에서 클릭하여 확장합니다. 구성요소 서비스, 펼치려면 클릭하세요. 컴퓨터, 펼치려면 클릭하세요. 내 컴퓨터, 펼치려면 클릭하세요. 분산 트랜잭션 코디네이터 그런 다음 클릭하세요. 지역 DTC.

  3. 마우스 오른쪽 버튼으로 클릭 지역 DTC 그리고 클릭 속성 표시하기 위해 로컬 DTC 속성 대화 상자.

  4. 다음을 클릭하세요. 보안 탭.

  5. 체크 표시 "네트워크 DTC 액세스" 체크박스.

  6. 마지막으로 체크 표시 "인바운드 허용" 그리고 "아웃바운드 허용" 확인란.

  7. 딸깍 하는 소리 적용하다, 좋아요.

  8. 에 대한 메시지가 나타납니다. 다시 시작 서비스.

  9. 딸깍 하는 소리 좋아요 그리고 그게 다야.

참조 : https://msdn.microsoft.com/en-us/library/dd327979.aspx

메모: 때로는 로컬 컴퓨터나 서버의 네트워크 방화벽이 연결을 방해할 수 있으므로 규칙을 만들어야 합니다. "인바운드 허용" 그리고 "아웃바운드 허용" 연결 C:\Windows\System32\msdtc.exe

MSDTC가 필요합니까?발생한 에스컬레이션은 단일 TransactionScope 내에서 여러 연결을 생성함으로써 발생하는 경우가 많습니다.

꼭 필요한 경우 오류 메시지에 설명된 대로 활성화해야 합니다.XP의 경우:

  • 관리 도구 -> 구성 요소 서비스로 이동합니다.
  • 구성 요소 서비스 확장 -> 컴퓨터 ->
  • 마우스 오른쪽 버튼 클릭 -> 속성 -> MSDTC 탭
  • 보안 구성 버튼을 누르세요

디버깅하는 가장 좋은 방법은 다음과 같은 Microsoft 도구를 사용하는 것입니다. DTCPing

  1. 파일을 서버(DB)와 클라이언트(애플리케이션 서버/클라이언트 PC) 모두에 복사합니다.
    • 서버와 클라이언트에서 시작
    • 서버에서:클라이언트 netbios 컴퓨터 이름을 입력하고 DTC 연결 설정을 시도합니다.
    • 두 응용 프로그램을 모두 다시 시작합니다.
    • 클라이언트에서:서버 netbios 컴퓨터 이름을 입력하고 DTC 연결 설정을 시도합니다.

저는 이전 회사 네트워크에 많은 문제가 있어서 몇 가지 팁을 얻었습니다.

  • "Gethostbyname failed"라는 오류 메시지가 표시되면 컴퓨터가 다른 컴퓨터를 찾을 수 없다는 의미입니다. 넷바이오스 이름.예를 들어 서버는 클라이언트를 확인하고 핑할 수 있지만 이는 DNS 수준에서 작동합니다.netbios 조회 수준이 아닙니다.WINS 서버를 사용하거나 LMHOST(더티)를 변경하면 이 문제가 해결됩니다.
  • "액세스 거부됨" 오류가 발생하면 보안 설정이 일치하지 않는 것입니다.msdtc의 보안 탭을 비교하여 서버와 클라이언트가 일치하는지 확인해야 합니다.또 한 가지 살펴보아야 할 점은 원격 클라이언트 제한 값.OS 버전과 더 중요한 서비스 팩에 따라 이 값은 다를 수 있습니다.
  • 기타 연결 문제:
    • 서버와 클라이언트 사이의 방화벽은 포트 135를 통한 통신을 허용해야 합니다.그리고 더 중요한 것은 두 사이트 모두에서 연결이 시작될 수 있다는 것입니다. (저희 회사의 방화벽 담당자는 서버만 해당 포트에 대한 연결을 열 것이라고 가정했기 때문에 많은 문제를 겪었습니다.)
    • 프로토콜은 실제 트랜잭션 통신을 위해 연결할 임의의 포트를 반환합니다.방화벽 사람들은 그것을 좋아하지 않으며 포트를 특정 범위로 제한하는 것을 좋아합니다.에 설명된 대로 키를 사용하여 RPC 동적 포트 생성을 특정 범위로 제한할 수 있습니다. 방화벽과 작동하도록 RPC 동적 포트 할당을 구성하는 방법.

내 경험에 따르면 DTCPing이 클라이언트에서 시작되고 서버에서 시작되는 DTC 연결을 설정할 수 있으면 트랜잭션은 더 이상 문제가 되지 않습니다.

또한 볼 수 있습니다 여기 제어판의 services.msc에서 MSDTC를 활성화하는 방법에 대해 알아보세요.

트리거가있는 서버에서는 MSDTC 서비스를 켜야합니다.시작 > 설정 > 제어판 > 관리 도구 > 서비스를 클릭하면 됩니다.'분산 트랜잭션 코디네이터'라는 서비스를 찾아 마우스 오른쪽 버튼을 클릭하십시오 (선택)> 시작.

MSDTC는 서버와 클라이언트의 두 시스템 모두에서 활성화되어야 합니다.
또한 RPC를 차단하는 시스템 사이에 방화벽이 없는지 확인하세요.
DTC테스트 다른 문제를 해결하는 데 도움이 되는 멋진 앱입니다.

@단,

거래를 위해 MSDTC가 활성화되어 있지 않습니까?

분산 트랜잭션만 - 단일 연결 이상을 포함하는 트랜잭션입니다.트랜잭션 내에서 단일 연결만 열면 연결이 확대되지 않는지 이중으로 확인하세요. 성능도 훨씬 좋아질 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top