증상

여러 테이블을 조인 하 고 Microsoft SQL Server의 원격 인스턴스가 호스트 하는 분산 쿼리가 XACT_ABORT 세션 설정이 켜져있는 동안 실행 되 면 다음 오류 중 하나가 발생할 수 있습니다.

메시지 3989, 수준 16, 상태 1, 줄 # 새 요청은 유효한 트랜잭션 설명자와 함께 사용 하기 때문에 시작할 수 없습니다.

메시지 3988, 수준 16, 상태 1, 줄 # 세션에서 실행 중인 다른 스레드가 있기 때문에 새 트랜잭션을 사용할 수 없습니다.

원인

다음 조건에 해당 하는 경우 SQL Server가 DQs (분산 쿼리)를 처리 하는 방식에 몇 가지 디자인 제한이 있습니다.

  • SQL Server는 하나의 원격 SQL Server 데이터 원본에 대 한 여러 테이블을 조인 합니다.

  • 쿼리를 실행 하는 세션이 분산 트랜잭션에 등록 되어 있지 않습니다.

이 경우 쿼리를 실행 하려고 하면 "현상" 절에 나와 있는 두 오류 중 하나가 발생할 수 있습니다.

해결 방법

이 문제를 해결 하려면 분산 쿼리를 "분산 트랜잭션 시작" 문에서 묶습니다.  BEGIN DISTRIBUTED TRANSACTION <Distributed Query> COMMIT TRANSACTION

추가 도움이 필요하신가요?

기술 향상

교육 살펴보기 >

새로운 기능 우선 가져오기

Microsoft Insider 참가 >

이 정보가 유용한가요?

언어 품질에 얼마나 만족하시나요?
사용 경험에 어떠한 영향을 주었나요?

의견 주셔서 감사합니다!

×