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