分布式事務管理器(MSDTC)的實現方法其實很簡單就那么幾行代碼:
using (TransactionScope scope = new TransactionScope()) {
//此處寫業務邏輯代碼,如:
//trancation one do something... var dbo1 = DBFactory.GetDBFacade(DBConnectionStringName.YSL_BusinessTravelTrade_ReadWrite); string sql1 = "UPDATE dbo.TestUser SET name='ccc' WHERE id = 2"; dbo1.ExecuteNonQuery(CommandType.Text, sql1); //trancation two do something... var dbo = DBFactory.GetDBFacade(DBConnectionStringName.YSL_BusinessTravel_ReadWrite); string sql = "UPDATE dbo.TestUser SET name='ccc' WHERE id = 2"; dbo.ExecuteNonQuery(CommandType.Text, sql); //submit
scope.Complete();
}
但是,分布式事務管理器(MSDTC)的配置方法就相對比較復雜了:
Microsoft .NET Framework 4.5 支持的操作系統:
Windows 7 Service Pack 1, Windows Server 2008 R2 SP1, Windows Server 2008 Service Pack 2
下面以XP系統服務器配置為例
1、啟動DTC服務:
在windows控制面版à管理工具à服務àDistributed Transaction Coordinatoà屬性à啟動
注:如果啟動失敗,可能是因為丟失了日志文件,重新創建日志文件,再啟動就行了。重新創建 MSDTC 日志,並重新啟動服務的步驟如下:
(1) 單擊"開始",單擊"運行",輸入 cmd 后按"確定"。
(2) 輸入:msdtc -resetlog (注意運行此命令時,不要執行掛起的事務)
(3) 最后輸入:net start msdtc 回車,搞定!
2、配置DTC的方法:
控制面板 -> 管理工具 -> 組件服務
注:帳戶一定得是:NT AUTHORITY\NETWORK SERVICE
如果沒有,需要進行如下設置:點擊“瀏覽”->”高級”->”立即查找”->選中” NT AUTHORITY\NETWORK SERVICE”->點擊”確定”
3、防火牆設置
控制面板-> Windows防火牆(WEB服務器和SQL服務器都需要配置此項)
4、ms sql server配置:
以上內容配置完成后,應該就OK了,但還是失敗的話,就需要更詳細的找問題了,以下是一些看端口的方法,僅供參考:
操作方法:運行cmd,進入DOS窗口,輸入命令 netstat -na 回車,於是就會顯示本機連接情況及打開的端口,如圖1。其中Local Address代表本機IP地址和打開的端口號(圖中本機打開了135端口),Foreign Address是遠程計算機IP地址和端口號,State表明當前TCP的連接狀態,圖中LISTENING是監聽狀態,表明本機正在打開135端口監聽,等待遠程電腦的連接。