본문 바로가기
IT/DB

[MS-SQL] 분산 트랜잭션을 시작할 수 없으므로 요청한 작업을 수행할 수 없습니다.

by Andante con moto 2022. 3. 31.
728x90
반응형

"분산 트랜잭션을 시작할 수 없으므로 요청한 작업을 수행할 수 없습니다. "

 ① 시작메뉴 > 실행에서 dcomcnfg를 입력한 다음 확인
 ② 구성 요소 서비스 > 컴퓨터 > 내 컴퓨터 > Distributed Transaction Coordinator > 로컬 DTC 선택
 ③ 로컬 DTC를 마우스 오른쪽 단추로 클릭하고 속성 선택
 ④ 로컬 DTC 속성 창이 나타나면 보안 탭을 클릭 후 다음과 같이 설정

- 만약 Windows 방화벽을 사용하고 있다면 Distributed Transaction Coordinator 를 예외로 두어야 한다.

- SQL 상에서는 반드시  SET XACT_ABORT ON 으로 세팅을 하고 begin tran 대신 begin DISTRIBUTED tran 을 사용 해야 한다.

 

[쿼리변경으로 오류는 발생하지 않으나, 원인파악 요청]

실제  where절의 조건이 가변적이라 조합하여 @qry에 설정 후 호출하고 있습니다.

쿼리 예시)

1. 분산트랜잭션 오류가 발생하는 쿼리 

declare @qry varchar(max)
declare @attendTbl table( comp_seq int)

set @qry ='select comp_seq from openquery(연결자, ''select comp_seq from 테이블명 LIMIT 10 '')' 
insert into @attendTbl exec (@qry)

select comp_seq from  @attendTbl




2. 쿼리변경으로 정상호출(테이블 변수대신 testTable 을 생성)

declare @qry varchar(max)

set @qry ='insert into testTable select comp_seq from openquery(연결자, ''select comp_seq from 테이블명 LIMIT 10 '')' 
exec (@qry)

select comp_seq  from  testable
728x90
반응형

댓글