2009-12-08 71 views
2

我想在不同的表上並行和以事務方式運行一組不同的命令,我該怎麼做?如何在C#中實現多線程事務?

更多細節:

我希望所有的命令分佈在線程,但在一個單一的交易,因此,如果所有的線程成功,我會犯別的回滾。

+0

什麼樣的命令是那些?與使用分佈式事務相比,您將經常從批處理操作中獲得更多好處。如果這些只是插入,最好只使用批量插入。 – 2009-12-09 07:28:56

+0

我有不同的表,我已經執行插入使用批量插入(SqlBulkCopy類)爲每個表,但目前它們是在串行執行,所以我試圖並行執行它們並保持事務行爲。 – 2009-12-09 08:02:04

回答

1

一個典型的數據庫連接不能處理多線程的使用,所以你不應該這樣做。

相反,您可以查看DTC,它允許多個數據庫連接在單個事務中協作。它雖然帶來了一些開銷,所以你應該看看你是否真的獲得了你想要的多線程優勢。

+0

這意味着沒有任何辦法可以從.Net來做到這一點? – 2009-12-08 12:37:18

+1

我沒有這麼說,我的意思是你需要的不僅僅是一個數據庫連接對象和多線程代碼。 – 2009-12-08 12:40:24

+0

艾哈邁德,這是關於MSQL服務器支持的比.NET更多的東西 - 這與任何使用ODBC驅動程序的語言都是一樣的。 – weismat 2009-12-08 13:51:23

0

我想運行 平行,並在交易方式上不同的表設置不同 命令, 我該怎麼辦呢?

從線#1:打開一個連接,開始一個事務,發出命令,提交事務。

從線#2:打開一個連接,開始一個事務,發出命令,提交事務

+1

我想要所有的命令分佈在線程上,但在單個事務中,全部或全部 – 2009-12-09 07:21:51