2010-07-16 97 views
3

我的任務是證明或反駁.net中的交易支持。我們都知道TransactionScope可以處理提交/回滾等簡單的事情,例如在3個不同的表中插入3條記錄,然後刪除其他5個表中的5條記錄。.net TransactionScope處理非常複雜的數據庫事情嗎?

我的團隊不太確定TransactionScope如果這些插入/刪除觸發器可以正確處理事務。或者如果我們執行一個擁有自己的嵌套事務的SP。

.net事務支持處理這些更復雜的情況嗎?你是否必須指定任何不太明顯的選項來使其全部工作?

我聽說我們的一些SP可能會導致我們的問題,因爲有幾個提交子交易。有誰知道這個特定的場景是否由TransactionScope處理?

回答

2

我們使用TransactionScope處理一些非常複雜和冗長的數據庫操作,涉及數十個或更多表中的數千行。它處理它就好了。但是,IMO不希望在存儲過程和/或觸發器中啓動和提交事務。您應該讓您的調用(C#)代碼處理該事務。通過在較低的存儲過程級別處理事務,您失去了很大的靈活性。

另外,使用TransactionScope時要小心,以限制自己到單個連接對象。如果您不這樣做,交易將升級到MTC交易,這需要MTC服務在客戶端和服務器上運行。

+0

我假設你使用了不少SP和觸發器?我的團隊(我不是那麼多)特別擔心有自己的嵌套交易的SP。此外,我們有一些觸發器/索引必須保持完整性,如果我們在table1-column1上插入觸發器,則會插入到table2-column2中,如果這些表已經不同步,那將非常糟糕。 你可以提供的任何闡述將非常感激。感謝您的初始響應。 – Sublimemm 2010-07-16 18:54:01

+0

感謝MTC提示,我們已經遇到了這個問題,並讓它在兩臺客戶端服務器上運行。如果只有我幾個月前可以閱讀你的評論,我將不會花費3天的時間來搞清楚爲什麼我的SIMPLE語句不工作:0 – Sublimemm 2010-07-16 18:55:25

+1

@Sublimemm - 你可以有任意數量的觸發器,儘可能多的表。 TransactionScope的使用將處理這個提交和回滾就好了。但是,您要求在存儲過程中提交或回滾事務時出現問題。你不應該這樣做(海事組織)。 – 2010-07-16 18:55:28