Sql-Server
指向同一伺服器 (localhost) 的連結伺服器導致“另一個會話正在使用事務上下文”錯誤
我們使用的是 SQL Server 2008。通常我們的應用程序使用分佈在網路上的不同數據庫,因此我們呼叫的一些儲存過程會使用連結伺服器。
現在我想在本地測試我們的應用程序,因此在我的本地機器上創建了所有數據庫(通常分佈在網路上)。所以所有的數據庫現在都生活在“localhost”上。我更改了連結伺服器,使它們都指向本地主機(並且快速選擇測試顯示它們正在工作)。
但是,當我呼叫使用連結伺服器(現在指向本地主機)的儲存過程並且這些過程正在使用事務時,我收到以下錯誤:“另一個會話正在使用事務上下文”。
我猜這是因為 SQL Server 認為它是分佈式事務,但它真的是本地事務?!
除了消除本地安裝上的連接伺服器並直接定址不同的數據庫,因為它們現在位於同一台伺服器上,我有什麼機會解決這個問題?
如果很重要:我沒有配置MS DTC,我只是在我的機器上啟動了相應的windows服務。(主要是因為我不確定在哪裡解決這個問題。)
環回連結伺服器不能用於分佈式事務。在本地安裝兩個 SQL Server 來解決您的問題。將一個實例連結到另一個實例。
http://msdn.microsoft.com/en-us/library/ms188716(SQL.105).aspx
您需要在您的機器上配置多個實例才能完成這項工作。作為生產中的物理機器的每台機器都需要成為筆記型電腦上的新實例。其原因是引用本地電腦的連結伺服器不適用於分佈式事務。
是的,您仍然需要正確設置和配置 MS DTC,以使所有這些都可以在單台電腦上與多個實例一起使用。