一、前言
最近在做一個項目的時候使用了
.NET
中的
System.Transactions
(分布式事務),當項目開發完成以後,調用的時候遇到了
MSDTC
的問題,在查閱了相關資料後将這個問題解決了,大緻的問題主要是使用了分布式事務,而無法通路到資料庫的問題,網上很多解決方法,都是啟動一下服務,然後再修改服務元件的選項,但是當Web伺服器與資料庫不在同一台機器上的時候,還是會報錯。
錯誤如下:
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5yMwgjMxYzN5kTMtEzM1UDN2UTMyYjM3AzNxAjMtAzMwQzM18CX3AzNxAjMvwFMzADNzUzLcd2bsJ2Lc12bj5ycn9Gbi52YucTMwIzcldWYtl2Lc9CX6MHc0RHaiojIsJye.png)
二、MSDTC說明
MSDTC
(分布式交易協調器),協調跨多個資料庫、消息隊列、檔案系統等資料總管的事務。
該服務的程序名為
Msdtc.exe
,該程序調用系統
Microsoft Personal Web Server
和
Microsoft SQL Server
。
該服務用于管理多個伺服器。
三、解決方案
- 在服務中啟動
服務Distributed Transaction Coordinator
MSDTC啟用——分布式事務 -
修改元件服務裡的選項
點選打開
—>開始
管理工具
依次展開元件服務
元件服務
計算機
我的電腦
,右擊Distributed Transaction Coordinator
,選擇本地DTC
,按下圖進行設定,設定完成後點選确定。屬性
這個時候本地已經可以正常使用了,但是Web伺服器與資料庫伺服器不在同一台機器上的時候,還是會報錯,這個時候需要在資料庫伺服器上打開一個端口和一個應用程式。
-
打開防火牆設定,添加出/入站規則
端口:
應用程式:135
C:\Windows\System32\msdtc.exe
MSDTC啟用——分布式事務
四、相關指令
- 啟動MSDTC服務:
net start msdtc
- 停止MSDTC服務:
net stop msdtc
- 解除安裝MSDTC服務:
msdtc -uninstall
- 重新安裝MSDTC服務:
mstdc -install
五、問題相關
- 基礎程式在 Open上失敗。
- 已禁用對分布式事務管理器(MSDTC)的網絡通路。
- 伺服器上的MSDTC不可用。