복붙노트

[SQL] 분산 트랜잭션 오류?

SQL

분산 트랜잭션 오류?

저장 프로 시저에서 나는 문 아래로 사용하고 있습니다. 내가 PROC 저장 실행했을 때 그러나 분산 트랜잭션 오류를 던지고.

Declare @res int
    Declare @mes as varchar(100)

    DECLARE  @Result TABLE (
result INT,
mesage VARCHAR(100))

    Insert @Result (result, mesage)         
            Exec [MySpeNet].[dbo].[GetMemberShipStatus]'3319994'
    select @res = result, @mes = mesage from @Result

예외:

      Msg 7391, Level 16, State 2, Procedure GetMemberShipStatus, Line 19
    The operation could not be performed because OLE DB provider "OraOLEDB.Oracle" 
for linked server "ASPQA" was unable to begin a distributed transaction.

또는

내가 임시 테이블을 생성하지 않고 결과 및 메시지를 저장할 수있는 다른 방법이 있습니까?

해결법

  1. ==============================

    1.옵션을 사용

    옵션을 사용

    구성 요소 서비스에서 로컬 DTC 속성의 보안 탭에서.

  2. ==============================

    2.이것은 나를 위해 일한 것입니다 :

    이것은 나를 위해 일한 것입니다 :

    내부 SQL Server Management Studio에서 서버 개체를 확장 한 다음 연결된 서버, 마우스 오른쪽 질문에 연결된 서버에 버튼으로 클릭하고 '속성.' '서버 옵션'페이지를 선택하고 '거짓'으로 설정 '분산 트랜잭션의 프로모션 사용'확인

    또는 당신은 T-SQL로 작업을 수행 할 수 있습니다

    USE master;
    EXEC sp_serveroption '<<your linked server name>>', 'remote proc transaction promotion', 'false';
    
  3. from https://stackoverflow.com/questions/6999906/distributed-transaction-error by cc-by-sa and MIT license