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