2010-11-03 105 views
1

我在我的主機服務器上設置了鏈接服務器:「MyLinkedServer」 我的服務器「HostServer」上有一個SP。跨鏈接服務器的SQL更新

我正在調用HostServer上的存儲過程,該存儲過程使用MyLinkedServer上的DatabaseB中的表中的值更新MyLinkedServer上的DatabaseA中的表。

我有其他SP在相同的情況下運行正常,但他們正在做插入和刪除,但此SP無法更新DatabaseA中的表(沒有錯誤返回,只是沒有更改的數據),如果我更改連接要真正在「MyLinkedServer」上運行SP,它可以毫無問題地工作。

UPDATE MyLinkedServer.DataBaseA.dbo.MyTable 
SET Column1 = db2.Column1 

FROM MyLinkedServer.DataBaseA.dbo.MyTable db1 
INNER JOIN 
     (
      SELECT TOP 1 Column1 
      FROM MyLinkedServer.DataBaseB.dbo.MyTable db2 
      WHERE db2.Id = 2 
     ) AS db2 ON db2.Id = 2 

WHERE db1.Id = 1 
+0

你可以發佈一些示例代碼?也是這個SQL Server,如果是的話是什麼版本? – JNK 2010-11-03 13:40:56

+0

您是否在使用任何分佈式事務? – 2010-11-03 13:41:14

+0

沒有分佈式事務,它們因爲沒有設置在鏈接服務器上處理它們而倒閉了 – Ben 2010-11-03 13:53:14

回答

0

我相信你需要引用你在from語句中引用的別名。是否改變

UPDATE MyLinkedServer.DataBaseA.dbo.MyTable 

UPDATE db2 

解決您的問題?