none
如何於LINQ to Entity中進行交易管理 RRS feed

  • 問題

  • Dear all:
           我嘗試在LINQ to Entity刪除多筆資料時,以TransactionScope進行交易管理,但一直不能成功,參考了黑暗執行序的大作仍未能解決。

    下列為我的環境:

    AP
       OS:Windows XP SP3
       IDE:Visual Studio 2008 SP1
    DB
       OS:Windows 2000 Server SP4
       DB:SQL Server 2005 Standard SP3

    PS:附帶一提,我的AP和DB是不同網段。

    下列為遇到的狀況與嘗試解決的做法:
         1.遇到下列錯誤訊息
    System.Runtime.InteropServices.COMException (0x8004D024): The transaction manager has disabled its support for remote/network transactions. (Exception from HRESULT: 0x8004D024) 
    Network access for Distributed Transaction Manager (MSDTC) has been disabled. Please enable DTC for network access in the security configuration for MSDTC using the Component Services Administrative tool.
         依照雖然我的AP環境是XP但我還是依照MSDTC on Windows 2003 SP1的注意事項一文進行相關設定。
         
         2.遇到下列錯誤訊息:
    Error HRESULT E_FAIL has been returned from a call to a COM component.
    Communication with the underlying transaction manager has failed.
         因為我的AP和DB不同網段,所以依照KB-MSDTC Cross different domains將DB SERVER的IP加到lmhosts檔,也在AP SERVER上的防火牆將MSDTC設為例外。

       忙了半天還是沒能解決問題,仍會出現上述2的錯誤訊息,希望各位高手們能協助解答,謝謝!
    2009年5月20日 上午 09:32

所有回覆

  • 不同網段就會比較麻煩了,你可能需要先確定兩端的 MS DTC 可以正常溝通,如果連正常溝通都不行,那其他的也不用檢查了,因為一定不會成功。
    小人物一枚。
    2009年5月20日 上午 10:33
    版主
  • 請問版主該如何確定兩端的MSDTC可以正常溝通呢?
    另外,不同版本的MSDTC可以溝通嗎?
    如果用MSDTC跨網段比較麻煩,是否有其他機制可以使LINQ支援Transaction。
    謝謝!
    2009年5月21日 上午 01:18