【发布时间】:2015-09-03 00:55:55
【问题描述】:
我已经运行了以下命令来包含另一个服务器实例。
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”。
有人能发现我错过了什么吗?
【问题讨论】:
-
您是否设置了链接服务器?
-
我运行与
[Server].[ServerDB].[dbo].[tableName]交互的其他命令,所以我非常有信心它已附加。只是这个更新给我带来了问题。 -
它似乎试图将
[allrows]解释为列名。 -
对不起,这是一个不好的例子,
[allrows]是一个列名。我的意思是说[allColumns]。 -
你可以测试链接服务器吗?:
SELECT * FROM [Server].ServerDB.dbo.tableName。这会返回行吗?
标签: sql sql-server database sql-update sql-merge