我已经运行以下命令来包含另一个服务器实例。
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"无法受约束。
有人能发现我失踪的东西吗?
答案 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