SQL MERGE到远程(链接)服务器表

时间:2013-03-06 00:45:39

标签: sql sql-server-2008 sql-merge

是否可以在链接服务器的数据库表上使用SQL MERGE函数?最终目标是将远程表与本地SQL Server表同步。我在网上做过一些研究,找不到任何相关信息。如果可能,您将如何设置源语句和目标语句?

3 个答案:

答案 0 :(得分:14)

重申@Mikael Eriksson的评论,是的,你可以。 MERGE的目标不能是远程的,但MERGE的可以是远程的。因此,如果您可以在FL中从服务器运行MERGE语句,那么很有可能。例如,您可以在FL中删除服务器上运行类似的内容:

MERGE INTO "local FL table" USING "CT server"."database"."schema"."same table" ON ...

答案 1 :(得分:5)

显然我的研究还不够好,它在MSDN上声明: “target_table不能是远程表”......所以回答这个问题......

答案 2 :(得分:-1)

Yoy总是可以在服务器的YOUR_LINKED_SERVER中使用EXEC('SQL CODE HERE'),也可以作为存储过程使用。

这将在链接服务器上执行您想要的查询,以便您可以将本地表(target_table)与服务器表(源)合并。

这是我在我的服务器中的存储过程中使用的代码,它从客户端调用。客户端exec存储过程在server-> Server Exec Query中使用相同的信息(员工)更新不同的链接服务器(客户端)

    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