如何可靠地檢查MSDTC是否將事務提升爲分佈式事務?可靠的MSDTC促進交易分佈式測試?
這是在.net中使用TransactionScope時。
目前,一名同事正在通過關閉其計算機上的協調員來測試此功能 - 如果發生異常,則會將此作爲證明嘗試推動交易發生。這是一個有效的測試?
如何可靠地檢查MSDTC是否將事務提升爲分佈式事務?可靠的MSDTC促進交易分佈式測試?
這是在.net中使用TransactionScope時。
目前,一名同事正在通過關閉其計算機上的協調員來測試此功能 - 如果發生異常,則會將此作爲證明嘗試推動交易發生。這是一個有效的測試?
我認爲你的測試是確定的,儘管你應該確保你得到一個DTC異常而不是其他異常。
一些其他的事情可以做:
你也可以運行SQL事件探查器,並在交易跟蹤DTCTransaction。
根據代碼,您可以處理DistributedTransactionStarted事件並在分佈式事務啓動時記錄消息。
或者您可以在事務結束之前添加日誌消息以記錄System.Transactions.Transaction.Current. TransactionInformation.DistributedIdentifier
。如果值爲Guid.Empty {00000000-0000-0000-0000-000000000000},那麼它不是分佈式事務,否則事務已被提升爲分佈式事務。
你說你使用的是SQL Server 2008.你使用的是什麼版本的.NET?它是3.5嗎?如果您使用的是SQL Server 2008 and .NET 3.5,那麼您應該能夠在同一事務中打開多個連接(使用相同的連接字符串)到同一個數據庫,而不升級到分佈式事務。爲此,您需要在打開第二個連接之前關閉第一個連接。
如果出現所有條件得到滿足,交易仍在不斷升級,我想:
UPDATE:Distributed Transaction Coordinator(MSDTC) and Transaction FAQ將MSDTC資源彙總在一起。
感謝您的詳細解答 - 您從哪裏獲得這些知識?你能推薦MSTDC上的任何資源嗎? – Oded 2010-03-20 17:34:02
MSDTC在工作時很棒。當它不工作的時候,當你最瞭解它。 :)一般來說,MSDN具有最好的MSDTC資源。對於疑難解答,http://support.microsoft.com/kb/306843通常是goto文章,但是這是http://msdn.microsoft.com/en-us/library/aa561924%28BTS.10%29.aspx ,非常好。 – 2010-03-22 15:57:16
+1的詳細答案 – IgorK 2010-05-26 06:44:56
MSDTC是一個非常堅實的產品。你確定你需要測試嗎? – Steven 2010-03-16 20:55:07
@Steven - 我需要檢查交易是否被提升。情況是,交易不應該被促進,但我的同事相信他們正在被提升。我們如何確定?我們如何檢查交易是否被提升? – Oded 2010-03-16 22:36:00
@Oded:如果事務不應該被提升,爲什麼你使用'TransactionScope'? – Steven 2010-03-17 07:46:09