3

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

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”。

有人能发现我错过了什么吗?

4

2 回答 2

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 
于 2015-06-17T17:03:28.523 回答
2
UPDATE
    serverDB
SET 
    [columnName] = localdb.[columnName]
FROM 
    [Server].[ServerDB].[dbo].[tableName] serverDB
INNER JOIN
     [LocalDB].[dbo].[tableName] localDB
ON 
     serverDB.id = localDB.id
于 2015-06-17T17:03:45.453 回答