검색도 해보고 하루종일 고민해봤지만 풀리지 않습니다. ㅠ.ㅠ
트랜잭션 걸어서 A 서버에서 B 서버로 insert 를 해야 되는데요.
DTC 설정을 하지 않고 가능할까 하여 문의 드립니다.
에러 메시지는
-------------------------------------------------------------------------
연결된 서버 "LINKED_TEST"의 OLE DB 공급자 "SQLNCLI"이(가) 메시지 "파트너 트랜잭션 관리자가 원격/네트워크 트랜잭션에 대한 지원을 할 수 없습니다."을(를) 반환했습니다.
메시지 7391, 수준 16, 상태 2, 줄 7
연결된 서버 "LINKED_TEST"의 OLE DB 공급자 "SQLNCLI"이(가) 분산 트랜잭션을 시작할 수 없으므로 요청한 작업을 수행할 수 없습니다.
-------------------------------------------------------------------------
입니다.
트랜잭션을 걸지 않았을 경우에는 정상적으로 insert 가 잘 되는데 트랜잭션을 걸면 위에 처럼 에러가 납니다.
그냥 insert 문을 사용하여도 에러가 나고 openquery 를 사용해도 똑같은 에러가 발생합니다.
BEGIN TRAN
insert into A서버테이블 (aaa, bbb) values ('aaa', 'bbb')
insert into LINKED_TEST.B서버DB명.dbo.B서버테이블 (ccc, ddd) values ('ccc', 'ddd')
or
insert openquery(LINKED_TEST, 'select ccc, ddd from B서버DB명.dbo.B서버테이블')
values ('ccc', 'ddd')
COMMIT TRAN
링크드 서버 (LINKED_TEST) 의 rpc 값 2개 모두 true 로 설정 하였습니다.
DTC 설정 이외엔 방법이 없을까요? 고수님들 조언 부탁드립니다.
즐거운 주말 되세요~
꼭 DTC 설정을 하지 않으셔야 한다면
A 서버에 있는 테이블을 B 서버의 임시 테이블에 넣으신 다음에
임시 테이블에서 B 서버 테이블에 넣을 때 트랜잭션을 거는 건 어떨까요?