SQL Server - Openquery y merge

 
Vista:

Openquery y merge

Publicado por Azor (2 intervenciones) el 21/06/2016 08:50:11
En un servidor de SQL Server2012 tengo vinculado/linkado uno de MySql. Intento actualizar datos desde SQLServer hacia Mysql con merge, de la siguiente forma:

MERGE INTO OPENQUERY(SERVIDOR_MYSQL, 'SELECT campo1, campo2, campo3, campo4 FROM [SRV_VINCULADO].[bd].[tabla1]') AS DESTINO
USING [BD_ORIGEN].[dbo].[tabla1] AS ORIGEN
ON (ORIGEN.campo1 = DESTINO.campo1 AND ORIGEN.campo2 = DESTINO.campo2)
WHEN MATCHED THEN UPDATE
SET DESTINO.campo3 = ORIGEN.campo3,
DESTINO.campo4 = ORIGEN.campo4
WHEN NOT MATCHED THEN INSERT
VALUES(ORIGEN.campo1,
ORIGEN.campo2,
ORIGEN.campo3,
ORIGEN.campo4)
WHEN NOT MATCHED BY SOURCE THEN DELETE;


El problema está en el alias 'DESTINO', pues no me lo reconoce y no puedo hacer el update.

He probado varias opciones para intentar solucionarlo como ésto
- MERGE INTO OPENQUERY(SERVIDOR_MYSQL, 'SELECT campo1, campo2, campo3, campo4 FROM tabla1') AS DESTINO
- MERGE INTO OPENQUERY(SERVIDOR_MYSQL, 'SELECT campo1, campo2, campo3, campo4 FROM [SRV_VINCULADO].[tabla1]') AS DESTINO


pero nada , por favor alguien me podría ayudar?

Saludos y gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Openquery y merge

Publicado por Azor (2 intervenciones) el 28/06/2016 08:52:01
Por si puede ayudar, les comento la solución que alguien amablemente me proporcionó:

WITH DESTINO AS (
SELECT empresa, campo1, campo2, campo3, campo4
FROM OPENQUERY(SERVIDOR_MYSQL, 'campo1, campo2, campo3, campo4 FROM SRV_VINCULADO.bd.tabla1')
)
MERGE INTO DESTINO
USING ([BD_ORIGEN].[dbo].[tabla1]) AS ORIGEN
ON (ORIGEN.campo1 = DESTINO.campo1 AND ORIGEN.campo2 = DESTINO.campo2)
WHEN MATCHED THEN UPDATE
SET DESTINO.campo3 = ORIGEN.campo3,
DESTINO.campo4 = ORIGEN.campo4
WHEN NOT MATCHED THEN INSERT
VALUES(ORIGEN.campo1,
ORIGEN.campo2,
ORIGEN.campo3,
ORIGEN.campo4)
WHEN NOT MATCHED BY SOURCE THEN DELETE;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar