错误信息:Microsoft 分布式事务处理协调器(MS DTC)已取消此分布式事务
生活随笔
收集整理的這篇文章主要介紹了
错误信息:Microsoft 分布式事务处理协调器(MS DTC)已取消此分布式事务
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Microsoft 分布式事務處理協調器 (MS DTC) 是一個事務管理器,它允許客戶端應用程序在一個事務中包含多個不同的數據源。MS DTC 協調在所有已在事務中登記的服務器間提交分布式事務。
Microsoft? SQL Server? 安裝可通過下列方法參與分布式事務:
1,調用運行 SQL Server 的遠程服務器上的存儲過程。?
2,自動或顯式地將本地事務提升為一個分布式事務并在該事務中登記遠程服務器。
3, 執行分布式更新以更新多個 OLE DB 數據源上的數據。如果這些 OLE DB 數據源支持 OLE DB 分布式事務接口,SQL Server 還可以將它們登記在分布式事務中。 MS DTC 服務協調正確完成分布式事務,以確保所有服務器上的全部更為永久性的,或在發錯誤時刪除所有更新。?
SQL->CREATE TABLE test1 ([id] int ,email varchar(50))
表test1在A服務器中,表email在B服務器中,其表結構和test1一樣。在A服務器中運行
SQL->EXEC sp_addlinkedserver 'B','SQL Server'?
SQL->GO
SQL->EXEC sp_addlinkedsrvlogin 'B','false','sa','sa','123456'
同樣在B服務器中運行以上代碼,不同的是服務器名稱的變化。
在B服務器中執行如下語句:
SQL->CREATE PROCEDURE dbo.usp_test?
SQL->AS
SQL->SELECT id,email FROM email?
SQL->GO
這樣就把為AB服務器互相添加了Linked Server,并在AB服務器中啟動MSDTC服務。在A服務器中運行如下語句:
SQL->BEGIN TRANSACTION Ta
SQL->INSERT INTO test (id,email)?
SQL->EXEC a.test.dbo.usp_test?
SQL->COMMIT TRANSACTION Ta
運行出錯,錯誤如下:
服務器: 消息 7391,級別 16,狀態 1,行 1
該操作未能執行,因為 OLE DB 提供程序 'SQLOLEDB' 無法啟動分布式事務。 [OLE/DB provider returned message: 新事務不能登記到指定的事務處理器中。 ] OLE DB 錯誤跟蹤[OLE/DB Provider 'SQLOLEDB' ITransactionJoin::JoinTransaction returned 0x8004d00a]。<br>估計是MSDTC的相關配置有問題。檢查MSDTC配置。似乎都滿足先制條件。苦思,終不得解,去網上找相關資料。終于不負有心人,找到了解決方法。繼續…… 解決方法: 組件服務=WIN+R調出運行框,輸入dcomcnfg 組件服務--> a.展開"組件服務"樹,然后展開"我的電腦"。b.右鍵單擊"我的電腦",然后選擇"屬性"。C.在 MSDTC 選項卡中‘安全配置’按鈕,確保選中了下列選項:網絡 DTC 訪問。網絡事務 XA 事務 d.另外,"DTC 登錄帳戶"一定要設置為"NT Authority\NetworkService"。e單擊"確定",重新啟動MSDTC。?
再次運行以上語句,結果成功。
總結
以上是生活随笔為你收集整理的错误信息:Microsoft 分布式事务处理协调器(MS DTC)已取消此分布式事务的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 为IDOC创建tRFC连接
- 下一篇: 什么是IDOC,以及IDOC的步骤