本文**:
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 的引用。下列 就是乙個正在建立的事務,這個事務自...