2010년 3월 22일 월요일

Microsoft MS-SQL Adapter 관련 Knowledge 공유

BizTalk Adapter 를 사용하여 Remote Server A에 있는 Stored Procedure를 호출합니다.
이때 보안상의 이유로 A의 Procedure는 Remote Server B에 있는 Table에 Insert를 수행합니다.
이 때 BizTalk Server와 Remote Server B간에는 MSDTC 관련 포트가 열려있지 않습니다.
이때 다음과 같은 오류가 발생합니다.

The adapter "SQL" raised an error message. Details "HRESULT="0x80040e14" Description="OLE DB 공급자 'SQLOLEDB'에 대해 중첩된 트랜잭션을 시작할 수 없습니다. XACT_ABORT 옵션이 OFF로 설정되어 있으므로 중첩 트랜잭션이 필요합니다."

HRESULT="0x80040e14" Description="OLE DB 오류 추적 [OLE/DB Provider 'SQLOLEDB' ITransactionLocal::StartTransaction returned 0x8004d013: ISOLEVEL=1048576]."

HRESULT="0x80040e14" Description="[OLE/DB provider returned message: 이 세션에서는 트랜잭션을 더 이상 시작할 수 없습니다.]"

".

이 경우 찾아본 결과 Remote Server A에 있는 Procedure의 시작 부분에 SET XACT_ABORT ON 이라는 구문을 넣으면 잘 동작하네요.

댓글 없음:

댓글 쓰기