SQL合并到远程(链接)服务器表(SQL MERGE to remote (linked) serv

2019-08-17 08:36发布

是否有可能利用对链接服务器的数据库表中的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