1、現在A、B兩臺SQL服務器,IP地址分別為192.168.0.1與192.168.20.2,考慮到雙方相互取值,建立了‘鏈接服務器’。
2、現在有較復雜的應用,考慮先寫存盤程序將資料獲對到后,交給前端程式呼叫。
1)、先在A服務器執行一系列查詢;
2)、再通過‘鏈接服務器’方式從B服務器執行一系列查詢;
【需要A服務器的查詢作為其條件,現在是通過‘鏈接服務器’重新到A服務器取得查詢結果】;
3)、最終將A服務器查詢結果與B服務器回傳的結果組合后,最終結果交給前端程式呼叫A服務器的這個存盤程序;
問題:前端程式呼叫報錯:其他會話正在使用事務的背景關系。 Microsoft 分布式事務處理協調器(MS DTC)已取消此分布式事務。【直接在SQL里執行A服務器的存盤程序也是OK的】
百度查詢了該問題,意思是造成了資料回路,將第2個動作‘通過‘鏈接服務器’重新到A服務器取得查詢結果’屏蔽掉就OK了,但是這并不是最終想要的結果。求助各路大神,這種該如何解決?
【不知道能不能先在A服務器查詢的結果存入臨時表,再將臨時表資料作為第2個動作,通過‘鏈接服務器’方式呼叫B服務器存盤程序的引數傳入執行?】
uj5u.com熱心網友回復:
最終執行的時候是在哪個服務器上執行的,看樓主的問題,是在B服務器上先通過連接服務器查A服務器上的資料,再在B服務器上把查詢的結果作為條件執行一段查詢建議是吧A服務器的查詢結果放到一個臨時表或者變數里面,再在B服務器上進行查詢
另報其他會話正在使用事務的背景關系大概是因為走了鏈接服務器導致查詢的效率太慢了造成死鎖,然后msdtc自動把你這個行程殺掉了
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/195662.html
標籤:疑難問題
上一篇:有沒有大佬知道SQLServer 鏈接oracle 資料超過99條就會報這個錯嗎?但是99條以下資料就可以查出來。跪求大佬指導
