2009-04-23 6 views
3

SQL Server 2000에 연결하여 WinForms 응용 프로그램의 데이터를 변환하는 Windows Server 2003 Standard Edition SP1 컴퓨터에서 C# WinForms 응용 프로그램을 실행하려고하면 다음 오류가 발생합니다. 변환 된 것을 SQL 서버 2005 응용 프로그램에 삽입합니다. SSPI를 사용하여 각 데이터베이스에 연결하고 있습니다. HRESULT : 0x8004D00E TransactionScope 사용 - C#

코드

는 TransactionScope의 블록에 포함되었다 :

System.TimeSpan TransactionTimeOut = new TimeSpan(0, 40, 0); 

    using(TransactionScope Scope = new TransactionScope(TransactionScopeOption.RequiresNew, TransactionTimeOut)) 
    { 
     try 
     { 
      //meat of transaction... 
     } 
     catch(Exception ex) 
     { 
      throw ex; 
     } 

     Scope.Complete(); 
    } 

오류 메시지 :

예외 : 트랜잭션이 이미 암시 적 또는 명시 적으로 커밋되거나 중단되었습니다.

내부 예외 :

모든 일이 문제를 일으키는 원인이 될 수 있습니다 알고 : 트랜잭션이 이미 암시 적으로 또는 명시 적으로 커밋 또는 중단 (0x8004D00E 예외 HRESULT에서)있다?

+0

이있는 줄에는 예외를 발생합니까? 그리고 왜 블록을 사용하여 예외를 잡으려고합니까? – shahkalpesh

+0

원격 서버에서 응용 프로그램을 실행 중이므로 회선 번호를 캡처 할 수 없습니다. 내가 연결을 설정하고 데이터를 처리하는 유일한 장소이기 때문에 나는 using 문 안에 try/catch 블록을 놓았다. –

답변

4

코드가 실행되는 컴퓨터에서 DTC가 시작되는지 확인하십시오. 트랜잭션 범위에서 2 개의 연결을 사용하고 있기 때문에 트랜잭션은 DTC 기반 트랜잭션으로 승격됩니다.

또한 보안이 올바르게 구성되어 있는지 확인하고 (DTC 트랜잭션에 익명으로 참여하여 확인) 방화벽에서 DTC를 허용하는지 확인하십시오. 이 포럼 자주 묻는 질문 밖으로

확인 : Distributed Transaction Coordinator(MSDTC) and Transaction FAQ

[이 SO 질문에 관련 : Distributed Transaction Coordinator]

+0

DTC가 서버의 Mutual Authenication으로 설정되어 있습니다. 서버가 프로덕션 환경에 있기 때문에 서버의 설정을 조정할 수있는 변경 요청을 구체적으로 작성해야합니다. –

+0

MSDTC 트랜잭션 관리자 통신 설정을 "상호 인증 필요 "-"인증 필요 없음 "... 정보를 제공해 주셔서 감사합니다. –

+0

어디에서/어떻게 변경 했습니까? –

0

이 프로세스는 얼마나 걸리나요? 시간 초과 (40 분 제한 시간은 없지만 여전히 가능함)가 발생하면 오류 메시지가 표시 될 수 있습니다.

그렇지 않으면 예외가 발생합니까? 예외가 발생하기 전에 어떤 일이 발생하고 있습니까?

+0

약 6500 개의 레코드 만 처리하므로 시간 초과 임계 값에 도달하지 않습니다. 이것은 내가 프로세스를 실행하려고 할 때 얻을 수있는 유일한 예외입니다 –

+0

Mitch Wheat이 올바른 길에있을 것 같아요 ... –

+0

그의 솔루션을 시도하려면 변경 허가를 받아야합니다. 서버. –