TransactionScope 之分布式配置

2022-01-12 10:58:25 字數 1728 閱讀 8153

本文**:

transactionscope是個好東西,可以自動管理transaction,即使是對分布式資料庫也可以,但是需要一些配置(摸索了2天。。。), 本文的環境為windows 2003:

1. 對跑**的機器和sql所在的伺服器進行component services的配置

administative tools -> component services -> 點開component services -> computers -> my computer -> 右鍵屬性 -> 選擇msdtc -> security configuration -> 按如下配置 -> ok -> 重啟distributed transaction coordinator服務(一定要手動重啟喲)

最重要的是allow inbound 和 allow outbound, 其他意義如下:

2. 配置防火牆,同樣也是對跑**的機器和sql所在的伺服器進行配置

windows firewall -> exceptions -> add program -> browse -> "c:/windows/system32/msdtc.exe" -> ok

msdtc.exe 是windows 分布式服務程式。

上的乙個解決方法:

第一步:

--------------------

win2003預設禁用遠端/網路事務,啟用的步驟如下:

啟用網路 dtc 訪問的步驟

1. 單擊「開始」,指向「控制面板」,然後單擊「新增/刪除程式」。

2. 單擊「新增/刪除 windows 元件」。

3. 選擇「應用程式伺服器」,然後單擊「詳細資訊」。

4. 選擇「啟用網路 dtc 訪問」,然後單擊「確定」。

5. 單擊「下一步」。

6. 單擊「完成」。

7. 停止分布式事務協調器服務,然後重新予以啟動。

8. 停止參與分布式事務的任何資源管理器服務(如 microsoft sql server 或 microsoft message queue server),然後重新予以啟動。

--------------------------------

第二步:

--------------------------------

設定msdtc:控制面板->管理工具->元件服務->我的電腦->右鍵->屬性->msdtc->安全配置(security configuration)->開啟network dtc access 同時打上

allow inbound ,allow outbound ,no authentication required,enable transaction internet protocol[tip] transaction

---------------------------------

第三步:將msdtc程式新增入windows防火牆

注意:兩台參與分布事務的機器都需按如上操作設定。如果還有問題,則重啟機器。

比我多了第一步,在我的試驗中沒有用到第一步。

有人說transactionscope不支援跨域訪問,在我的實驗中,是可以跨域的。

關於transactionscope有幾點需要補充:

1. connection 須在transactionscope內部開啟且關閉

2. 執行sql時出現的異常要丟擲到transactionscope,以使得transactionscope知道發生異常了,準備回滾

TransactionScope 分布式事務

transactionscope是.net framework 2.0滯後,新增了乙個命名空間。它的用途是為資料庫訪問提供了乙個 輕量級 區別於 sqltransaction 的事物。使用之前必須新增對 system.transactions.dll 的引用。下列 就是乙個正在建立的事務,這個事務自...

TransactionScope 分布式事務配置

1 先新增system.transactions的引用 需要新增net程式集 c 呼叫時的 如下 using system.transactions using transactionscope scope new transactionscope 2 設定web伺服器及sql伺服器環境配置 控制面...

TransactionScope 分布式事務

transactionscope是.net framework 2.0滯後,新增了乙個命名空間。它的用途是為資料庫訪問提供了乙個 輕量級 區別於 sqltransaction 的事物。使用之前必須新增對 system.transactions.dll 的引用。下列 就是乙個正在建立的事務,這個事務自...