2010-05-18 96 views
0

我有一個使用TransactionScope類啓動事務的Visual Studio 2010 Windows窗體應用程序。然後,我從Sql Server Broker Services消息隊列接收消息,該消息工作正常。我接下來嘗試通過調用我的數據訪問層(這是一個Visual Studio數據集(xsd文件))從同一個數據庫調用存儲過程。當我對數據庫進行第二次調用時,出現以下錯誤消息:Windows 7 - 啓用網絡DTC訪問

由於通信問題,MSDTC事務管理器無法從源事務管理器獲取事務。可能的原因是:存在防火牆,並且它沒有MSDTC進程的例外情況,兩臺計算機無法通過其NetBIOS名稱找到彼此,或者沒有爲兩個事務管理器之一啓用對網絡事務的支持。 (來自HRESULT的異常:0x8004D02B)。

我在網上看過幾篇關於通過dcomcnfg.exe啓用DTC訪問並允許DTC通過Windows防火牆進行通信的文章。我已經完成了這些事情,並且仍然存在這個問題。我知道我們的遠程數據庫服務器設置爲啓用DTC訪問,因爲我們在Windows XP和Vista上使用Visual Studio 2008構建的其他項目中使用了類似的事務。我認爲有關Windows 7和Visual Studio 2010引發此問題的具體內容,但尚未能夠找出它是什麼。任何人都可以解決這個問題嗎?

我剛剛在另一位有此問題的程序員(http://www.pcreview.co.uk/forums/thread-3977150.php)上看到過一篇文章,他說它在Windows 7-x86上運行良好,但在Windows 7-x64上出現此錯誤。我正在運行Windows 7的x64版本,有誰知道Windows 7上是否存在MSDTC問題 - 64位版本?

回答

1

事實證明,我在SQL Server Service Broker的Receive調用中打開了一個數據庫連接,然後試圖建立到我的數據訪問層的新連接。這是造成這個問題的原因,修復後的結果是在打開第二個連接之前關閉第一個連接。

+0

開放式SQL連接也對我造成這個問題。 – TroyC 2012-01-03 06:01:45