Hay veces que necesitamos obtener en una sola consulta datos de tablas de diferentes bases de datos. Si estas bases de datos, están en el mismo servidor, no tenemos ningún problema, haciéndolo de la manera siguiente, lo tendríamos solucionado. Por ejemplo:
01 SELECT * FROM BD1.esquema.Tabla 02 UNION ALL 03 SELECT * FROM bd2.esquema.Tabla
En este caso estamos haciendo una simple unión (recordar que las campos que se devuelvan en cada subconsulta deben ser del mismo tipo y en el mismo orden). Pero que pasa si las bases de datos están en servidores diferentes, SQL Server 2008 nos proporciona las características necesarias para solventar este problema.
Lo primero que tendremos que hacer es agregar el servidor remoto al nuestro (al que estamos conectado) de la siguiente forma:
01 EXEC sp_addlinkedserver 'SERVIDORREMOTO\INSTANCIA', N'SQL Server';
Ahora, de una forma similar a como lo haciamos con diferentes bases de datos pero en el mismo servidor, lo haremos pero anteponiendo el servidor remoto.
01 SELECT * FROM [SERVIDORREMOTO\INSTANCIA].[BD1].[esquema].[Tabla] 02 UNION ALL 03 SELECT * FROM [SERVIDORLOCAL\INSTANCIA].[bd2].[esquema].[Tabla]
Para definir el Inicio de Sesión y la clave con la que queremos acceder al servidor, usaremos el procedimiento :sp_addlinkedsrvlogin, por ejemplo: exec sp_addlinkedsrvlogin 'h5sefsomzv.database.windows.net,1433', 'FALSE', NULL, 'iniciodesesion', 'claveiniciodesesion';
No hay comentarios:
Publicar un comentario