如何在不同服务器上更新其他表中的SQL表

时间:2015-06-17 16:40:26

标签: 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 
    [Server].[ServerDB].[dbo].[tableName], [LocalDB].[dbo].[tableName]
WHERE 
    [Server].[ServerDB].[dbo].[tableName].id = [LocalDB].[dbo].[tableName].id  

这给了我以下错误:

  

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

因此,在摆弄它之后,我尝试了各种各样的演绎:

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"无法受约束。

有人能发现我失踪的东西吗?

2 个答案:

答案 0 :(得分:3)

使用连接更新时需要使用此语法:

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

答案 1 :(得分:2)

UPDATE
    serverDB
SET 
    [columnName] = localdb.[columnName]
FROM 
    [Server].[ServerDB].[dbo].[tableName] serverDB
INNER JOIN
     [LocalDB].[dbo].[tableName] localDB
ON 
     serverDB.id = localDB.id