我想知道除了使用此连接进行远程更新之外是否还有其他选择。我是使用链接服务器的新手,我已经读过连接可能表现不佳(取决于实现)。作为参考,本地表很小,远程表很大,它们都具有相同的模式和表名。
[更新]
这有效:
UPDATE remoteTable
SET remoteTable.[Data] = mylocalTable.[Data]
FROM [RemoteServer].[MyDatabase].[dbo].[MyTable] remoteTable
INNER JOIN [dbo].[MyTable] myLocalTable ON (remoteTable.[Id] = myLocalTable.[Id])
这些无法正常工作。我已尝试过以下查询并遇到这些错误。
UPDATE [RemoteServer].[MyDatabase].[dbo].[MyTable]
SET [Data] = [dbo].[MyTable].[Data]
FROM [dbo].[MyTable]
WHERE [Id] = [dbo].[MyTable].[Id])
对象" RemoteServer.MyDatabase.dbo.MyTable"和" dbo.MyTable" FROM子句中具有相同的公开名称。使用相关名来区分它们。
UPDATE [RemoteServer].[MyDatabase].[dbo].[MyTable]
SET [Data] = mylocalTable.[Data]
FROM [dbo].[MyTable] myLocalTable
WHERE [Id] = myLocalTable.[Id])
不明确的列名' id'。
UPDATE [RemoteServer].[MyDatabase].[dbo].[MyTable]
SET [Data] = mylocalTable.[Data]
FROM [dbo].[MyTable] myLocalTable
WHERE ([RemoteServer].[MyDatabase].[dbo].[MyTable].[Id] = myLocalTable.[Id])
多部分标识符" RemoteServer.MyDatabase.dbo.MyTable.Id"无法受约束。
MERGE [RemoteServer].[MyDatabase].[dbo].[MyTable] remoteTable
USING [dbo].[MyTable] localTable ON (remoteTable.[Id]=localTable.[Id])
WHEN MATCHED THEN
UPDATE
SET [Data] = localTable.[Data]
;
MERGE语句的目标不能是远程表,远程视图或远程表上的视图。
答案 0 :(得分:0)
这会运行吗?
UPDATE RemoteServer.MyDatabase.dbo.MyTable
SET Data = (
SELECT Data
FROM myLocalTable lt
WHERE lt.Id = MyTable.Id
)
我不确定两个服务器之间的表名是否相同。确保对查询中的一个进行别名,并在没有四部分名称的情况下引用相关性中的更新表。