是否有可能利用对链接服务器的数据库表中的SQL合并功能? 最终目标是将远程表与我们的本地SQL Server表同步。 我已经在网上做了一些研究,但没有找到任何相关信息。 如果可能的话你会如何设置源和目标语句?
Answer 1:
要重申@Mikael埃里克森的评论,是的,可以。 一个MERGE的目标不能远程,但MERGE的源可以是远程的。 所以,如果你可以从你的FL服务器运行MERGE语句,那么它是完全可能的。 例如,你可以在你的FL删除服务器上运行是这样的:
MERGE INTO "local FL table" USING "CT server"."database"."schema"."same table" ON ...
Answer 2:
显然,我的研究还不够好,它表示对上MSDN:“target_table不能是远程表” ......,这样的回答这个问题......
Answer 3:
同比可以随时在你的服务器上使用EXEC(“SQL代码在这里”)AT YOUR_LINKED_SERVER,也许作为一个存储过程。
这将执行你希望你的链接服务器上查询,以便你可以与服务器表(源)合并的本地表(target_table)。
这是我在存储过程中使用的代码在我的服务器,其从客户端调用。 在服务器 - 客户端EXEC存储过程>服务器Exec的查询更新不同的链接服务器(客户端)使用相同的信息(员工)
EXEC('
SET IDENTITY_INSERT PVBC.DBO.empleadas ON
MERGE INTO PVBC.DBO.empleadas A
USING(
SELECT id_empleada, nombre, apellidos
FROM SERVIDOR.PVBC_SERVIDOR.DBO.empleadas) TA
ON (A.id_empleada =TA.id_empleada)
WHEN MATCHED THEN
UPDATE
SET A.nombre=TA.nombre,
A.apellidos=TA.apellidos
WHEN NOT MATCHED THEN
INSERT
(id_empleada, nombre, apellidos)
VALUES
(id_empleada, nombre, apellidos);
SET IDENTITY_INSERT PVBC.DBO.empleadas OFF
')AT MEGA --This is one of my linked servers
文章来源: SQL MERGE to remote (linked) server table