当SQL表位于不同的服务器上时,如何从其他表更新SQL表

当SQL表位于不同的服务器上时,如何从其他表更新SQL表,sql,sql-server,database,sql-update,sql-merge,Sql,Sql Server,Database,Sql Update,Sql Merge,我已经运行了以下命令以包含另一个服务器实例 EXEC sp_addlinkedserver @server='Server' 现在,我尝试使用以下方法同步这些数据库: UPDATE [Server].[ServerDB].[dbo].[tableName] SET [Server].[ServerDB].[dbo].[tableName].[columnName] = [LocalDB].[dbo].[tableName].[columnName] FROM [S

我已经运行了以下命令以包含另一个服务器实例

EXEC sp_addlinkedserver @server='Server'
现在,我尝试使用以下方法同步这些数据库:

UPDATE
    [Server].[ServerDB].[dbo].[tableName] 
SET 
    [Server].[ServerDB].[dbo].[tableName].[columnName] = [LocalDB].[dbo].[tableName].[columnName]
FROM 
    [Server].[ServerDB].[dbo].[tableName], [LocalDB].[dbo].[tableName]
WHERE 
    [Server].[ServerDB].[dbo].[tableName].id = [LocalDB].[dbo].[tableName].id  
这给了我以下错误:

FROM子句中的对象“LocalDB.dbo.tableName”和“Server.ServerDB.dbo.tableName”具有相同的公开名称。使用相关名称来区分它们

因此,在摆弄它之后,我尝试了各种不同的版本:

UPDATE
    [Server].[ServerDB].[dbo].[tableName] 
SET 
    [Server].[ServerDB].[dbo].[tableName].[columnName] = [LocalDB].[dbo].[tableName].[columnName]
FROM 
    [Server].[ServerDB].[dbo].[tableName] serverDB
INNER JOIN
     [LocalDB].[dbo].[tableName] localDB
ON 
     serverDB.id = localDB.id 
但他们都给了我一些错误的再现:

无法绑定多部分标识符“Server.ServerDB.dbo.tableName.allrows”


有人能发现我遗漏了什么吗

使用联接更新时需要使用以下语法:

UPDATE s
SET s.[columnName] = l.[columnName]
FROM 
    [Server].[ServerDB].[dbo].[tableName] s
INNER JOIN
     [LocalDB].[dbo].[tableName] l
ON 
     l.id = s.id 

您是否设置了链接服务器?我运行了与
[server].[ServerDB].[dbo].[tableName]
交互的其他命令,因此我非常确信它已连接。正是此更新给了我问题。它似乎试图将
[allrows]
解释为列名。抱歉,这是一个糟糕的示例,
[allrows]
是列名。我的意思是说
[allColumns]
。你能测试链接的服务器吗?:
从[server].ServerDB.dbo.tableName
中选择*。那会返回行吗?是的,看起来是这样的!好的,谢谢!我是SQL新手,这对我来说很奇怪,因为似乎在
集中使用了变量名
s
l
,然后在
FROM
内部联接中定义它们。是的,使用联接更新的语法是问题所在。它在SQL Server中有点古怪。s和l称为别名,您使用过serverDB和localDB,我使用过s和l,但您可以使用任何您想要的别名。
UPDATE
    serverDB
SET 
    [columnName] = localdb.[columnName]
FROM 
    [Server].[ServerDB].[dbo].[tableName] serverDB
INNER JOIN
     [LocalDB].[dbo].[tableName] localDB
ON 
     serverDB.id = localDB.id