1、開啓DTC服務sql
方式一數據庫
計算機—管理—服務—Distributed Transaction Coordinator—屬性—開啓安全
方式二服務器
CMD命令子界面輸入:net start msdtc網絡
2、設置MSDTC分佈式
CMD命令界面輸入:dcomcnfg.exe(或者:控制面板—管理工具—組件服務)工具
組件服務--計算機--個人電腦--Distributed Transaction Coordinator-本地DTCurl
3、spa
防火牆設置
設置例外程序「C:\Windows\System32\msdtc.exe」3d
4、數據庫管理系統設置
數據庫系統的設置,具體以下圖。
右鍵 實例 屬性
5、代碼
DAL層代碼
public static bool ExecuteSqlTranScope(List<SqlCommand> cmdList) { int rows = 0; try { using (System.Transactions.TransactionScope tsCope = new System.Transactions.TransactionScope()) { foreach (SqlCommand cmd in cmdList) { cmd.Connection.Open(); PrepareCommand(cmd, cmd.Connection, null, CommandType.Text, cmd.CommandText, cmd.Parameters); rows += cmd.ExecuteNonQuery(); } tsCope.Complete(); } if (rows > 0) return true; else return false; } catch { return false; } }
調用
List<System.Data.SqlClient.SqlCommand> cmdList = new List<System.Data.SqlClient.SqlCommand>(); string connectStr = "data source=192.168.1.221;initial catalog=db;persist security info=True;user id=sa;password=123456;"; string connectStr2 = "data source=192.168.1.221;initial catalog=db;persist security info=True;user id=sa;password=123456;"; string sql = "INSERT INTO [SYS_USER_ADMIN]([FID],[LANGUAGEID],[LOGIN],[PASSWORD],[NAME],[CREATEMAN],[CREATEDATE],[MODIFYMAN],[MODIFYDATE],[UPDATETIME])VALUES (NEWID(),1,'TEST','TEST','TEST','',GETDATE(),'',GETDATE(),GETDATE())"; string sql2 = "INSERT INTO [SYS_USER_ADMIN]([FID],[LANGUAGEID],[LOGIN],[PASSWORD],[NAME],[CREATEMAN],[CREATEDATE],[MODIFYMAN],[MODIFYDATE],[UPDATETIME])VALUES (NEWID(),1,'TEST2','TEST2','TEST2','',GETDATE(),'',GETDATE(),GETDATE())"; cmdList.Add(new System.Data.SqlClient.SqlCommand(sql, new System.Data.SqlClient.SqlConnection(connectStr))); cmdList.Add(new System.Data.SqlClient.SqlCommand(sql2, new System.Data.SqlClient.SqlConnection(connectStr2))); SqlHelper.ExecuteSqlTranScope(cmdList);
其餘錯誤狀況:
錯誤1:(前提是程序和數據庫 不在同一個服務器時)已禁用對分佈式事務管理器(MSDTC)的網絡訪問。請使用組件服務管理工具啓用 DTC 以便在 MSDTC 安全配置中進行網絡訪問。
須要設置程序服務器的DTC
錯誤2: 該事務管理器已經禁止了它對遠程/網絡事務的支持。 (異常來自 HRESULT:0x8004D024)
須要設置數據庫服務器的DTC
錯誤3:與基礎事務管理器的通訊失敗
須要設置程序服務器的DTC 防火牆問題
參考 http://wenku.baidu.com/link?url=ps4eSRpjF6TVy0tY7jCHSSOv1SmE4wzpDnxsBmy7C21FcFgb1mJySCCf82-fUASTD12f1C_7VhKIryEFCaWLA7ZS4UwRcMlOumWmY7KNISG