Hay dos tablas en dos bases de datos diferentes en diferentes servidores, necesito unirlas para hacer pocas consultas. ¿Que opciones tengo? ¿Qué tengo que hacer?
102
Hay dos tablas en dos bases de datos diferentes en diferentes servidores, necesito unirlas para hacer pocas consultas. ¿Que opciones tengo? ¿Qué tengo que hacer?
Respuestas:
Deberá utilizar
sp_addlinkedserver
para crear un enlace de servidor. Consulte la documentación de referencia para conocer su uso. Una vez que se establece el enlace del servidor, construirá la consulta como de costumbre, simplemente prefijando el nombre de la base de datos con el otro servidor. ES DECIR:Una vez que se establece el enlace, también puede usar
OPENQUERY
para ejecutar una declaración SQL en el servidor remoto y transferirle solo los datos. Esto puede ser un poco más rápido y permitirá que el servidor remoto optimice su consulta. Si almacena en caché los datos en una tabla temporal (o en memoria)DB1
en el ejemplo anterior, podrá consultarlos como si se uniera a una tabla estándar. Por ejemplo:Consulte la documentación de OPENQUERY para ver algunos ejemplos más. El ejemplo anterior es bastante elaborado. Definitivamente usaría el primer método en este ejemplo específico, pero la segunda opción que usa
OPENQUERY
puede ahorrar algo de tiempo y rendimiento si usa la consulta para filtrar algunos datos.fuente
Prueba esto:
fuente
Si su dba no permite un servidor vinculado, puede usar OPENROWSET. Books Online le proporcionará la sintaxis que necesita.
fuente
Desde una perspectiva empresarial práctica, la mejor práctica es hacer una copia reflejada de la tabla de la base de datos en su base de datos y luego hacer que una tarea / proceso la actualice con delta cada hora.
fuente
La combinación de dos tablas se realiza mejor con un DBMS, por lo que debe hacerse de esa manera. Puede reflejar la tabla más pequeña o un subconjunto de ella en una de las bases de datos y luego unirlas. Uno podría tener la tentación de hacer esto en un servidor ETL como informatica, pero supongo que no es aconsejable si las tablas son enormes.
fuente
Si la opción de enlace de la base de datos no está disponible, otra ruta que podría tomar es vincular las tablas a través de ODBC a algo como MS Access o Crystal Reports y unirse allí.
fuente
Quizás los nombres de bases de datos codificados no sean el mejor enfoque siempre dentro de una consulta SQL. Por lo tanto, agregar sinónimos sería un mejor enfoque. No siempre es el caso de que las bases de datos tengan el mismo nombre en varios entornos de ensayo. Pueden consistir en sufijos como PROD, UAT, SIT, QA, etc. Por lo tanto, tenga en cuenta las consultas codificadas de forma rígida y hágalas más dinámicas.
Enfoque n. ° 1: use sinónimos para vincular tablas entre bases de datos en el mismo servidor.
Enfoque n. ° 2: recopile datos por separado de cada base de datos y únalos en su código. Las cadenas de conexión de su base de datos podrían ser parte de la configuración de su servidor de aplicaciones a través de una base de datos o un archivo de configuración.
fuente
Probé este código a continuación y está funcionando bien
fuente
Puedes probar lo siguiente:
fuente
para esto simplemente siga la siguiente consulta
Donde escribí el nombre de la base de datos, tienes que definir el nombre de la base de datos. Si está en la misma base de datos, entonces no necesita definir el nombre de la base de datos, pero si está en otra base de datos, debe mencionar el nombre de la base de datos como ruta o le mostrará un error. Espero haberte facilitado el trabajo
fuente
Mientras tenía problemas para unir esas dos tablas, logré hacer exactamente lo que quería al abrir ambas bases de datos remotas al mismo tiempo. MySQL 5.6 (php 7.1) y el otro MySQL 5.1 (php 5.6)
Si obtiene esos dos OK en la pantalla, ambas bases de datos están abiertas y listas. Luego puede proceder a realizar sus consultas.
Estaba tratando de hacer algunas uniones, pero como abrí esas dos bases de datos, puedo ir y venir haciendo consultas simplemente cambiando la conexión
$mysqli1
o$mysqli2
Funcionó para mí, espero que ayude ... Saludos
fuente