본문 바로가기

MS SQL Server/Administration&Management

MSDTC > DTCPing이 성공 했지만, 분산트랜잭션 수행 시 "No transaction is active." 오류가 발생하는 경우

안녕하세요.


SQL Server Linked Server를 통한 분산 트랜잭션에서, MS DTC 설정과 관련하여 다른 문제가 없었는데도, 

No Transaction is Active 오류가 발생하는 경우에 대한 경험을 공유합니다.



-   현상

OLE DB provider "SQLNCLI11" for linked server "LNKD_Test" returned message "No transaction is active."

Msg 7391, Level 16, State 2, Procedure SP__Test, Line ##

The operation could not be performed because OLE DB provider "SQLNCLI11" for linked server "LNKD_Test" was unable to begin a distributed transaction.

상적으로 MSDTC를 설정하고, DTC Ping이 성공했음에도, Linked Server를 통해 분산트랜잭션 호출 시 "No transaction is active." 오류가 발생합니다.    


-   환경

> Server : Amazon EC2 / r4.8XLarge 

> OS     : Windows Server 2012 R2 STD x64 Non-AD

> DB     : SQL Server 2014 SP2 CU2 STD x64 12.00.5532 / Standalone


-    DTC 관련 테스트 항목

> 1. DTC Ping Test           : 정상 완료

> 2. Hosts 설정               : Host 구성 확인

> 3. Linked Server 설정     : 분산트랜잭션 정상 동작하는 다른 서버와 동일함

> 4. Local DTC 설정         : 분산트랜잭션 정상 동작하는 다른 서버와 동일함

> 5. SP Configure 설정     : 정상 (AD-Hoc Distributed Query : 1)


-    원인

     > Event Viewer등에서 원인을 특징할만한 오류메세지를 발견하지 못했지만,
   아래 Reference에 따라 
EC2에 구성에 사용된 OS 템플릿(SysPrep)의 문제로 예측 됩니다. (실제 DTC 재설치 후, 분산트랜잭션 정상화 되었습니다.)


-       대응 

::CMD 관리자모드로 실행

net stop MSDTC

msdtc -uninstall

msdtc install


::MSDTC 서비스를 지연된 시작으로 설정

sc.exe config MSDTC start=delayed-auto

net start MSDTC

net stop SQLSERVERAGENT

net stop MSSQLSERVER

net start MSSQLSERVER

net start SQLSERVERAGENT

 > DTC Service 삭제 후, 재설치 하여 문제 해결 됨





넥슨 GameDB팀 / 차태욱