Hay dos tablas en dos bases de datos diferentes en servidores diferentes, necesito unirme para hacer algunas consultas. ¿Que opciones tengo? ¿Que debería hacer?Consultar datos uniendo dos tablas en dos bases de datos en servidores diferentes
Respuesta
Deberá usar sp_addlinkedserver
para crear un enlace al servidor. Consulte el reference documentation para conocer su uso. Una vez que se establece el enlace del servidor, construirá la consulta de la forma habitual, simplemente prefijando el nombre de la base de datos con el otro servidor. I.E:
-- FROM DB1
SELECT *
FROM [MyDatabaseOnDB1].[dbo].[MyTable] tab1
INNER JOIN [DB2].[MyDatabaseOnDB2].[dbo].[MyOtherTable] tab2
ON tab1.ID = tab2.ID
Una vez que se establezca el enlace, también se puede utilizar OPENQUERY
para ejecutar una instrucción SQL en el servidor remoto y transferir sólo los datos de nuevo a usted. 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 la memoria) en el DB1
en el ejemplo anterior, podrá consultarla de la misma forma que si se uniera a una tabla estándar. Por ejemplo:
-- Fetch data from the other database server
SELECT *
INTO #myTempTable
FROM OPENQUERY([DB2], 'SELECT * FROM [MyDatabaseOnDB2].[dbo].[MyOtherTable]')
-- Now I can join my temp table to see the data
SELECT * FROM [MyDatabaseOnDB1].[dbo].[MyTable] tab1
INNER JOIN #myTempTable tab2 ON tab1.ID = tab2.ID
Mira la documentation for OPENQUERY para ver algunos ejemplos más. El ejemplo de arriba es bastante artificial. 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.
Si su dba no permite un servidor vinculado, puede usar OPENROWSET. Books Online proporcionará la sintaxis que necesita.
Una combinación de dos tablas se realiza mejor con un DBMS, por lo que debe hacerse de esa manera. Podría duplicar la tabla o subconjunto más pequeño en una de las bases de datos y luego unirlas. Uno podría tener la tentación de hacer esto en un servidor de ETL como informatica, pero supongo que no es recomendable si las tablas son enormes.
Desde una perspectiva empresarial práctica, la mejor práctica es hacer una copia duplicada de la tabla de la base de datos en su base de datos, y luego simplemente tener una tarea/proceso actualizarlo con delta cada hora.
Prueba esto:
SELECT tab2.column_name
FROM [DB1.mdf].[dbo].[table_name_1] tab1 INNER JOIN [DB2.mdf].[dbo].[table_name_2] tab2
ON tab1.col_name = tab2.col_name
Probé por debajo de este código y que está funcionando bien
SELECT TimeTrackEmployee.StaffID
FROM dbo.tblGBSTimeCard AS GBSTimeCard INNER JOIN
TimeTrak.dbo.tblEmployee AS TimeTrackEmployee ON GBSTimeCard.[Employee Number] = TimeTrackEmployee.GBSStaffID
Si la opción de enlace de base de datos no está disponible, otra ruta que podría tomar es vincular las tablas a través ODBC a algo como MS Access o Crystal reports y únete allí.
puede probar con el siguiente:
select customer1.Id,customer1.Name,customer1.city,CustAdd.phone,CustAdd.Country
from customer1
inner join [EBST08].[Test].[dbo].[customerAddress] CustAdd
on customer1.Id=CustAdd.CustId
nombres de bases de datos Tal vez no modificables no es el mejor enfoque siempre dentro de un-consulta SQL. Por lo tanto, agregar sinónimos sería un mejor enfoque. No siempre ocurre que las bases de datos tengan el mismo nombre en varios entornos de ensayo. Pueden consistir en postfixes como PROD, UAT, SIT, QA, etc. Así que tenga en cuenta las consultas codificadas y agrúpelas.
Método n.º 1: utilice sinónimos para vincular tablas entre bases de datos en el mismo servidor.
Método n.º 2: recopile datos por separado de cada base de datos y únalo a 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.
para esto simplemente siguen a continuación consulta
select a.Id,a.type,b.Name,b.City from DatabaseName.dbo.TableName a left join DatabaseName.dbo.TableName b on a.Id=b.Id
donde escribí nombrebasedatos, usted tiene que definir el nombre de la base de datos. Si está en la misma base de datos, por lo que no necesita definir el nombre de la base de datos, pero si se encuentra en otra base de datos, debe mencionar el nombre de la base de datos como ruta de acceso o le mostrará un error. Espero que haya hecho su trabajo fácil
- 1. ¿Tablas de dos bases de datos diferentes en un DBML?
- 2. Seleccionar dos o varias tablas de bases de datos diferentes
- 3. Uniendo Resultados de Dos Bases de Datos Separadas
- 4. ¿Cómo copio o importo esquemas de Oracle entre dos bases de datos diferentes en servidores diferentes?
- 5. mysql sincronización de dos tablas de 2 bases de datos
- 6. ¿Puede un procedimiento almacenado trabajar con dos bases de datos diferentes? ¿Qué tal dos servidores?
- 7. Consultar dos bases de datos con Oracle SQL Developer
- 8. mySQL selecciona diferencias entre dos tablas en bases de datos diferentes
- 9. Cómo obtener una lista de todas las tablas en dos bases de datos diferentes
- 10. Consultar dos tablas desde un esquema diferente
- 11. ¿Cómo comparar dos bases de datos?
- 12. Conéctese a dos bases de datos
- 13. Datos de dos tablas en una vista
- 14. unir dos estructuras de tablas idénticas con datos diferentes
- 15. ¿Cómo combinar dos bases de datos en SQL Server?
- 16. ¿Comparar estructuras de dos bases de datos?
- 17. Sincronizar el esquema de dos bases de datos en MySQL
- 18. uniendo dos matrices numpy
- 19. Comparar dos bases de datos SQL
- 20. Sincronización entre dos bases de datos
- 21. ¿ActiveRecord habla con dos bases de datos?
- 22. Cómo mover datos entre 2 tablas/con columnas diferentes en bases de datos diferentes
- 23. Mover datos entre diferentes servidores en Oracle
- 24. Forma más rápida fusionar dos bases de datos SQLITE
- 25. ¿Cómo se accede a dos bases de datos en Grails
- 26. Agregar relación de clave externa entre dos bases de datos
- 27. Cómo comparar los datos entre los dos tipos de tabla en diferentes bases de datos utilizando SQL Server 2008?
- 28. uniendo dos tablas con una clave externa con nulo?
- 29. Asociar tablas de diferentes bases de datos - Entity Framework
- 30. ¿Podemos usar join para dos tablas de base de datos diferentes?
es posible con php-mysql ..si es así, ¿puede por favor sugerirme una forma de cómo puedo crecer con esa opción? – Jhanvi
No tengo idea si MySQL admite servidores vinculados. Esta respuesta es específica de Microsoft SQL Server. –
Si alguien está buscando una respuesta PostgreSQL, intente esto: http://www.postgresql.org/docs/9.4/static/postgres-fdw.html – PJSCopeland