2010-11-03 68 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 

解决您的问题?