2014-01-23 28 views
0

情況: WCF Service with TransactionScopeRequired OperationBehaviour。 WCF服務運行一個使用SqlBulkCopy將多行插入到數據庫的進程。SqlBulkCopy在WCF Sercive中用於設置TransactionScopeRequired的超時時間

在沒有TransactionScopeRequired行爲的情況下使用時,SqlBulkCopy插入的記錄沒有問題,但是當此行爲設置爲true時,即使少量記錄也可以插入。

更多信息 - WCF服務使用MSMQ端點。

回答

0

確定..這是晚了,當我張貼以上.. :)

經過進一步的分析(我很慚愧地寫這..!)這個問題是由於我的服務利用的實現的任務處理庫 - 即我有多個進程使數據庫調用包裹在一個TransactionScope - 例如 -

- 第一個進程對數據庫執行操作。此操作將事務附加到transactionscopes事務並導致數據庫鎖定。

- 生成第二個進程並嘗試寫入同一個表 - 它不能作爲事務不是原始事務作用域的一部分。

解決方案 - 一些重新設計將需要提供更智能的交易管理!