본문 바로가기
개발언어/.NET

"MSDTC를 사용할 수 없습니다." 오류 처리

by 공장장코난 2019. 12. 21.

MSSQL Express를 이용한 Client Application을 작성중이다. Client에서 만들어진 데이터를 별도 Thread Daemon을
통해 서버로 전송하고, 집계된 데이터는 별도 배치를 통해 데이터를 가공하게 된다.

그러나 Application 시작 후 종종 'SELECT' 구문은 처리되지만 Trasaction이 걸려 있는 Query 문에서
아래 오류가 종종 발생한다.
'System.Data.SqlClient.SqlException: 서버 'IC0-W-N07511\SQLEXPRESS'의 MSDTC를 사용할 수 없습니다.'
분산처리를 위한 Setting은 이미 적용한 상태로 원인을 파악한 결과 'MSDTC' 서비스 중지 상태다.

그럴때마다 Windows 서비스 창에서 그림의 'Distributed Transaction Coordinator' 재시작 하곤 했는데, 
실제 운영시에 문제가 될것으로 판단해서 프로그램 Starter가 시작시 MSDTC를 시작할 수 있도록 작업 했다. 

 

원도우 MSDTC 서비스

 

첨부된 Class 사용법은 아래와 같다.
private void RunMSDTC()
{
   Common.ServiceHelper.StartService("MSDTC", 3000/*Timeout - Milliseconds*/);
   ...
}

참조:https://www.csharp-examples.net/restart-windows-service/

 

Start, Stop and Restart Windows Service [C#]

Start, Stop and Restart Windows Service [C#] This example shows how to start, stop and restart a windows service programmatically in C#. Start service The following method tries to start a service specified by a service name. Then it waits until the servic

www.csharp-examples.net

 

 

ServiceHelper.cs
0.00MB