MS SQL Server/Administration&Management

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

SQLDBWook 2018. 8. 29. 18:58

안녕하세요.


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팀 / 차태욱