PDA

Ver la Versión Completa : Consulta de 2 servidores


lgarcia
13-08-2005, 18:50:57
Hola:

Estoy tratando de hacer un reporte y los origenes de datos estan en 2 BD de 2 Servidores SQL2000, cual es la forma de poner el numero o el nombre del servidor en el FROM de la consulta.

Saludos
Luis Garcia

_____________________________
La mejor manera de decir es hacer

Xianto
15-08-2005, 15:06:40
Buenas, imagina que el SQL es un lenguaje que debe tener una conexión activa para realizar su ejecución. Por tal motivo como mucho pudes tener una clausula como USE DB en el cual podrias traer datos de varias DB pero ha de estar en el mismo servidor.

Quizas deberias tener 2 consultas con distintas conexiónes, server1 y server2 y luego mezclarlas entre si para obtener lo que quieres...

Yo haria una query del server2 y luego crearia por medio de una tabla #temporal una tabla con esos datos en el server1, para luego sacar los datos mezclados.

No se hay varias opciones he ideas sobre esto... pero de ninguna manera puedes hacer algo en un FROM ni desde una Query ya que debe llevar implícitamente una conexión.

Si explícas algo más de tu idea y de los datos, quizás entre todos podamos darte una idea más sólida...

Saludetes !

__hector
15-08-2005, 18:47:56
En SQL Server puedes hacer consultas entre servidores (cross linked servers). Tienes que añadir el servidor en cuestion a la lista de servidores enlazados, con el procedimiento:

sp_addlinkedserver [mira la documentacion de los BOL]

Una vez hecho esto, la consulta te sale tan facil como:

SELECT A.campo1, B.Campo2
FROM Servidor1.BaseDatos.dbo.Tabla1 A
INNER JOIN Servidor2.BaseDatos.dbo.Tabla2 B
ON A.llave=B.llave

Xianto
16-08-2005, 21:34:35
Bueno, esto último a mi me parece que es una opcion que no esta a la altura de la DB actuales, un simple select tardará hasta 8 veces más que ejecutar el mismo select en un analizador de consultas...

Nunca me ha terminado de convencer por varios motivos, pero bue...

__hector
17-08-2005, 20:10:32
ahh??

A la altura de que ? La verdad no entendi mucho el mensaje, pero creo que ese punto podemos debatirlo

Xianto
17-08-2005, 21:15:32
jejeje... debatir es una palabra perfecta... a que si ???

Perdon por no haber puesto un post mas claro, es que he dejado de fumar y estoy con ganas de comerme al mundo. jejejeej

"Linkear un server no esta a la altura de las DB actuales..."

Con esto quiero expresar que dentro de los servicios que da una DB este es uno de los peores de MSSQL.

Por eso, cada uno puede hablar por 2 cosas, estudios y experiencia... en mi epoca de estudio no existia este servicio y la experiencia me ha dicho que no funciona en absoluto como deberia, por ello, opino que al menos en lo que respecta a mi experiencia con este servicio, es algo no recomendable.

__hector
19-08-2005, 04:58:45
vamos a ver... no se que tengamos por entendido que signifique el linkear los servidores pero: si tenemos dos bases de datos en dos servidores distintos, la unica forma de hacer un cruce de tablas, es a~adiendo un "enlace" de un servidor a otro.

Esta claro que el rendimiento puede disminuir en ese tipo de consulta frente a una que enlace tablas de la misma base de datos o servidor, pero es la unica forma de hacerlo. De hecho, sqlserver ofrece esa ventaja, digamos que competitiva, frente a otros motores de bases de datos como interbase o mysql, que no permiten realizar dicha operacion.

roman
19-08-2005, 05:43:40
De hecho, sqlserver ofrece esa ventaja, digamos que competitiva, frente a otros motores de bases de datos como interbase o mysql, que no permiten realizar dicha operacion.

Bueno, mysql al menos te permite cruzar tablas de distintas bases en el mismo servidor mientras que interbase no. :)

Pero alguna vez lo mencioné y me "regañaron" arguyendo que tal tipo de cruces no es parte del modelo relacional :(

// Saludos