Hola de nuevo Libras!
He estado probando y con el insert no tengo problemas, quedaría el sql así:
Código SQL:
Ver originalINSERT INTO OPENQUERY(SERVIDOR_MYSQL,'SELECT campo1, campo2, campo3, campo4 FROM BD.tabla1')
SELECT ORIGEN.campo1, ORIGEN.campo2, ORIGEN.campo3, ORIGEN.campo4
FROM [BD_ORIGEN].[dbo].[tabla1] AS ORIGEN
LEFT JOIN OPENQUERY(SERVIDOR_MYSQL,'SELECT campo1, campo2, campo3, campo4 FROM BD.tabla1') AS DESTINO
ON (ORIGEN.campo1 = DESTINO.campo1 AND ORIGEN.campo2 = DESTINO.campo2)
WHERE (DESTINO.campo1 IS NULL AND DESTINO.campo2 IS NULL)
pero con el update me da el siguiente error, aunque acaba haciendo los cambios:
"El proveedor OLE DB "MSDASQL" del servidor vinculado "XXXXXXXX" devolvió el mensaje "No se puede encontrar la fila para su actualización: algunos valores han cambiado desde la última vez que se leyó.".
Mens. 7343, Nivel 16, Estado 4, Línea 1
El proveedor OLE DB "MSDASQL" del servidor vinculado "XXXXXXXXI" no pudo UPDATE la tabla "[MSDASQL]". El conjunto de filas utiliza simultaneidad optimista y el valor de una columna ha cambiado desde que se capturó o"
La sql sería ésta:
Código SQL:
Ver originalWITH DESTINO AS (
SELECT campo1, campo2, campo3, campo4
FROM OPENQUERY(SERVIDOR_MYSQL, 'SELECT campo1, campo2, campo3, campo4 FROM BD.tabla1')
)
UPDATE DESTINO
SET DESTINO.campo1 = COMPLETA.campo1,
DESTINO.campo2 = COMPLETA.campo2,
DESTINO.campo3 = COMPLETA.campo3,
DESTINO.campo4 = COMPLETA.campo4
FROM
(
SELECT ORIGEN.campo1, ORIGEN.campo2, ORIGEN.campo3, ORIGEN.campo4
FROM [BD_ORIGEN].[dbo].[tabla1] AS ORIGEN
LEFT JOIN OPENQUERY(SERVIDOR_MYSQL,'SELECT campo1, campo2, campo3, campo4 FROM BD.tabla1') AS DESTINO
ON (ORIGEN.campo1 = DESTINO.campo1 AND ORIGEN.campo2 = DESTINO.campo2)
WHERE (DESTINO.campo1 IS NOT NULL AND DESTINO.campo2 IS NOT NULL)
) AS COMPLETA
WHERE (COMPLETA.campo1 = DESTINO.campo1 AND COMPLETA.campo2 = DESTINO.campo2)
Ves alguna o varias cosas mal en la sql del update?