다음을 통해 공유


MSSQLSERVER_3988

적용 대상: SQL Server

세부 정보

attribute
제품 이름 SQL Server
이벤트 ID 3988
이벤트 원본 MSSQLSERVER
구성 요소 SQLEngine
심볼 이름 XACT_UNSUPPORT_PARALLEL_TRAN2
메시지 텍스트 세션에서 실행 중인 다른 스레드가 있기 때문에 새 트랜잭션은 허용되지 않습니다.

설명

이 오류는 세션 설정이 ON인 동안 SQL Server의 원격 인스턴스에서 호스트하는 여러 테이블을 조인하는 분산 쿼리를 XACT_ABORT 실행할 때 발생합니다. 사용자에게 다음과 같은 오류 메시지가 보고됩니다.

Msg 3988, Level 16, State 1, Line #
세션에서 실행 중인 다른 스레드가 있기 때문에 새 트랜잭션은 허용되지 않습니다.

원인

다음 조건이 충족될 때 SQL Server에서 DQ(분산 쿼리)를 처리하는 방식에는 몇 가지 디자인 제한 사항이 있습니다.

  • SQL Server는 하나의 원격 SQL Server 데이터 원본의 여러 테이블을 조인합니다.
  • 쿼리를 실행하는 세션이 분산 트랜잭션에 등록되지 않았습니다.

이 경우 쿼리를 실행하려고 하면 설명 섹션에 언급된 두 가지 오류 중 하나가 발생할 수 있습니다.

사용자 작업

이 문제를 해결하려면 분산 쿼리를 '분산 트랜잭션 시작' 문으로 묶습니다.

BEGIN DISTRIBUTED TRANSACTION
/*The actual Distributed Query goes next, outside of comments*/
COMMIT TRANSACTION