Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

como vincular 2 servidores???

Estas en el tema de como vincular 2 servidores??? en el foro de SQL Server en Foros del Web. Hola a todos!!!...de regreso con una nueva pregunta: necesito generar una consulta entre 2 tablas pero que se encuentran en 2 servidores distintos, para ello ...
  #1 (permalink)  
Antiguo 02/02/2007, 15:57
 
Fecha de Ingreso: septiembre-2006
Mensajes: 161
Antigüedad: 17 años, 7 meses
Puntos: 0
Pregunta como vincular 2 servidores???

Hola a todos!!!...de regreso con una nueva pregunta: necesito generar una consulta entre 2 tablas pero que se encuentran en 2 servidores distintos, para ello se que necesito vincularlos pero no sé como...alguna ayuda...
  #2 (permalink)  
Antiguo 04/02/2007, 00:12
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 4 meses
Puntos: 98
Re: como vincular 2 servidores???

Investiga sobre sp_addlinkedsrvlogin

Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #3 (permalink)  
Antiguo 06/02/2007, 10:57
Avatar de Carcharhinus  
Fecha de Ingreso: septiembre-2004
Mensajes: 264
Antigüedad: 19 años, 7 meses
Puntos: 0
Re: como vincular 2 servidores???

Hola, para que pueda funcionar las consutlas entre ambos servidores, necesitas tener un usuario con el cual harás el acceso o el vínculo.
Desde el:
1.Enterprise Manager, en la parte de seguridad(Securuty) en Linked Server,
2.Has click derecho y selecciona New Linked SErver,
3.Dentro de la ventana que aparece, escribe el nombre del servidor al cual necesitas el acceso a la informacion.
4. Selecciona la casiila SQL SERVER, en la opción SERVER TYPE.
5. En la pestaña de Seguridad (Security) escribes el usuario local, el cual utilizas en la base de datos del servidor local, en el panel derecho escribes el usuario y contraseña del usuario del servidor remoto, con este usuario podras entrar a las bases de datos que ocupas.
6. En la parde de abajo de la ventana, selecciona la casilla " Be made using this security context" y escribes el usuario y password remoto (el del otro server)
y es todo.

Nota:
El usuario con el cual estes haciendo el vinculo deberá tener acceso a los objetos que requieres en el servidor remoto (Bases de datos, tablas, vistas, SP's,etc.)

Espero te sirva en algo...
Saludos...
__________________
"Never attribute to malice that which can be adequately explained by stupidity."
  #4 (permalink)  
Antiguo 15/02/2007, 12:59
 
Fecha de Ingreso: septiembre-2006
Mensajes: 161
Antigüedad: 17 años, 7 meses
Puntos: 0
Re: como vincular 2 servidores???

Hola!!!...no habia podido probar la vinculación de los servidores, ya la pobré y por alguna razón no he logrado hacer la vinculacion:

mi servidor local se llama MGE, con un usuaio de windows "mge1", y el usuario de autentificación de sql es "sat", el servidor con el que me quiero conectar se llama SRT, y el usuario de sql se llama "aut" con la contraseña "aut" , pero al tratar de conectarme me marca el siguiente error:

Código:
"No se pudo registrar el servidor SQL Server or el siguiente error de conexión. Desea registrarlo de todas formas?
No existe el servidor SQL Server o se ha denegado el acceso al mismo. ConnectionOpen (Connect())"
Por otro lado tengo una duda, ya con esto puedo realizar consultas en con tablas de ambos servidores?, ya que según el link que tambien me enviaron necesito generar un store procedure (sp_addlinkedsrvlogin):

Sintax:
Código:
OPENROWSET('provider_name',
{'datasource';'user_id';'password' | 'provider_string'},
{[catalog.][schema.]object | 'query'})

Usage:
Código:
USE pubs
GO
SELECT a.*
FROM OPENROWSET('SQLOLEDB','Pluto';'netUser';'totem12',
'SELECT * FROM pubs.dbo.authors ORDER BY au_lname, au_fname')
AS a
GO
SELECT o.*
FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0','C:\northwind.mdb';'Admin';", 'Orders')
AS o
Aunque no entiendo bien como funcionan los store procedures!!!...
  #5 (permalink)  
Antiguo 15/02/2007, 16:52
Avatar de Carcharhinus  
Fecha de Ingreso: septiembre-2004
Mensajes: 264
Antigüedad: 19 años, 7 meses
Puntos: 0
Re: como vincular 2 servidores???

Supongamos que vas a conultar desde el servidor MGE hacia SRT.
1. En el servidor SRT debes crear un usuario que exista tambien en el MGE, podria ser el usuario "sat"
2. Dentro del servidor MGE debes crear el vinculo de la forma en que fue posteado con anterioridad.
3. En el Servidot SRT deberas de darle permisos al usuario "sat" en las bases de datos y objetos a las cuales tendra acceso el usuario que realiza la conexion.

El error que te señala es porque el usuario no tiene permisos dentro del servidor remoto (SRT)

como vincular seridores SQL
Otra mas
__________________
"Never attribute to malice that which can be adequately explained by stupidity."
  #6 (permalink)  
Antiguo 15/02/2007, 18:54
 
Fecha de Ingreso: septiembre-2006
Mensajes: 161
Antigüedad: 17 años, 7 meses
Puntos: 0
Re: como vincular 2 servidores???

Gracias Carcharhinus!!!! por el comentario...voy a probar lo que me sugieres...aunque el usuario en el servidor STR si tiene permisos para leer la tabla que requiero...solo me sigue qudando una duda, necesito generar una consulta (select) entre una tabla llamada ESCA1 en mi servidor MGE y una tabla llamada BAL en mi servidor STR (JOIN), ya con los servidores vinculados puedo hacer este query?...disculpa si no me quedó claro...
  #7 (permalink)  
Antiguo 15/02/2007, 19:29
Avatar de Carcharhinus  
Fecha de Ingreso: septiembre-2004
Mensajes: 264
Antigüedad: 19 años, 7 meses
Puntos: 0
Re: como vincular 2 servidores???

Desde el servidor MGE realiza este query:
SELECT * ---> o los campos que requieras
FROM SRT.TU DB.dbo.BAL ----> Nombre del servidor . Nombre de tu base de datos. propietario del objeto . nombre del objeto

de esta forma puedes consultar al servidor remoto, asi puedes realizar tus JOINS o lo que ocupes nadamas haces la consulta indicando que hacia el servidor remoto...
Espero te ayude...
Saludos...
__________________
"Never attribute to malice that which can be adequately explained by stupidity."
  #8 (permalink)  
Antiguo 16/02/2007, 11:47
 
Fecha de Ingreso: septiembre-2006
Mensajes: 161
Antigüedad: 17 años, 7 meses
Puntos: 0
Re: como vincular 2 servidores???

Hola Carcharhinus!!!...ya logré vincular mis 2 servidores en el enterprise manager...pero no veo todas las tablas de ese database...solo las que tienen como tipo system...por qué?...por orto lado pues me muestra las tablas y vistas...pero no las puedo abrir ni generar una nueva vista para hacer el query entre las 2 tablas...y como solo aparecen las tablas de un servidor...como voy a agregar la tabla del otro servidor??...
  #9 (permalink)  
Antiguo 16/02/2007, 12:20
Avatar de Carcharhinus  
Fecha de Ingreso: septiembre-2004
Mensajes: 264
Antigüedad: 19 años, 7 meses
Puntos: 0
Re: como vincular 2 servidores???

Cita:
Iniciado por mary* Ver Mensaje
ya logré vincular mis 2 servidores en el enterprise manager...pero no veo todas las tablas de ese database...solo las que tienen como tipo system...por qué?...(
Si no mal recuerdo, esto se debe a que el usuario en el servidor SRT, en la carpeta de seguridad dentro del mismo SRT, en la parte de logins, el usuario con el que creas el vinculo debe tener por defaul la base de datos a la que vas a entrar, claro, aparte de los permisos dentro de los objetos. Si el usuario no es el propietario de la DB, deberias darle permisos para que pueda crear objetos, esto es en las propiedades de la DB en la pestaña de Permissions.
SERVER-----Usuario------- DB por Deful---------- Permisos
SRT--------el que creaste--------DB a la que entra-------- tablas, vistas, sp, etc.

Cita:
Iniciado por mary* Ver Mensaje
por orto lado pues me muestra las tablas y vistas...pero no las puedo abrir ni generar una nueva vista para hacer el query entre las 2 tablas...y como solo aparecen las tablas de un servidor...como voy a agregar la tabla del otro servidor??
No puedes abrirlas ni generarlas por falta de permisos al usuario con el que haces el vinculo. Las tablas del servidor remoto no las puedes agregar en el servidor Local o visceversa, almenos que las crees, pero si puedes relacionar tablas y objetos de ambos servidores dentro de un Query o del algun procediemietno almacenado.

SELECT campo_1
FROM MGR.Database.Tabla
WHERE campo_1 IN (SELECT campo_1 FROM SRT.baseDatos.dbo.Tablita)

algo asi, no se sie este bien las Sintaxis pero es para que te des una idea en esa sentecia estas buscando el campo_1 pero que este dentro de la base de datos del servidor remoto.
Espero te ayude...
Saludos...
__________________
"Never attribute to malice that which can be adequately explained by stupidity."
  #10 (permalink)  
Antiguo 16/02/2007, 16:55
 
Fecha de Ingreso: septiembre-2006
Mensajes: 161
Antigüedad: 17 años, 7 meses
Puntos: 0
Re: como vincular 2 servidores???

...sigo sin dar una...mi servidor local es SRT con un usuario sa, mi servidor remoto es MGR con un usuario aut y contraseña aut, ya estan vinculados...necesito generar un query entre la tabla OPUNICOS que se encuentra en el servidor STR, database Rast, y la tabla ESCA1 que se encuentra el el servidor MGR, database Rsql. El dato que los relaciona es el que se encuentra en el campo Idetiq (char), y quiero que muestre el dato de NOMBRE (STR) y el de LINE (MGR) segun el Idetiq, relicé un query de pueba (más o menos como me sugeriste ):

Código:
SELECT     *
FROM         STR.Rast.dbo.opunicos opunicos_1
WHERE     (IDETIQ IN
                          (SELECT     IDETIQ
                            FROM          MGR.Rsql.dbo.ESCA1))
Pero al ejecutarlo me dió el siguiente error:

Código:
"No se encuentra el servidor STR en sysservers. Ejecute sp_addlinkedserver para agreagar el servidor a sysservers"
ejecuto el sp_addlinkedserver y me da el siguiente error:

Código:
Server: Msg 201, Level 16, State 4, Procedure sp_addlinkedserver, Line 0
El procedimiento 'sp_addlinkedserver' precisa el parámetro '@server', que no se ha especificado.
busqué la tabla sysservers que se encuentra en el master, la abro y resulta que existen 2 filas de datos, una con respecto al servidor STR y la otra referente al servidor MGR, no se que esta mal...
  #11 (permalink)  
Antiguo 16/02/2007, 17:36
Avatar de Carcharhinus  
Fecha de Ingreso: septiembre-2004
Mensajes: 264
Antigüedad: 19 años, 7 meses
Puntos: 0
Re: como vincular 2 servidores???

OK entonces prueba algo asi:

SELECT O.Nombre, E.LINE
FROM Rast..OPUNICOS as O INNER JOIN MGR.Rsql.dbo.ESCA1 as E
ON O.Idetiq = E.Idetiq
ORDER BY Idetiq

Esto te deberia arrojar datos de la tabla Nombre del servidor SRT y datos de la tabla LINE del servidor MGR y los ordena por el campo comun que es Idetiq...
haber si realice bien la sintaxis jejeje

Nota: Si realizas consutas locales no hagas esto STR.Rast.dbo.opunicos opunicos_1, porque al poner el nombre del servidor y despues el de la base de datos, SQL te va a tomar la sintaxis como si fuera un servidor linkeado, por eso te muestra el error Server: Msg 201, Level 16, State 4, Procedure sp_addlinkedserver, Line 0
El procedimiento 'sp_addlinkedserver' precisa el parámetro '@server', que no se ha especificado.

Solo podrias hacer esto Rast.dbo.opunicos o Rast..Opunicos, claro, esto es localmente.
Bueno, espero te ayude en algo...
Saludos...
__________________
"Never attribute to malice that which can be adequately explained by stupidity."
  #12 (permalink)  
Antiguo 19/02/2007, 17:16
 
Fecha de Ingreso: septiembre-2006
Mensajes: 161
Antigüedad: 17 años, 7 meses
Puntos: 0
De acuerdo Re: como vincular 2 servidores???

Carcharhinus!!!...ya logré conectar los 2 servidores...te agradezco muchisimo la ayuda... ...algo estaba haciendo mal en la consulta, pero los sevidores ya estaban linkeados y como no salía el query yo pensaba que el link no se había realizado... ...por otro lado la sintaxis de la consulta es algo así:


Código:
SELECT     ESCA1_1.ID, ESCA1_1.CODE AS CODE, ESCA1_1.NAME AS NAME, ESCA1_1.TYPE AS TYPE, 

ESCA1_1.SWALL AS SWALL, 
                      ESCA1_1.WEIGH AS WEIGH, ESCA1_1.WHOUSE AS WHOUSE, ESCA1_1.REJECT AS REJECT, 

ESCA1_1.IDETIQ AS IDETIQ1, 
                      dbo.Opunic.Idetiq AS IDETIQ2, dbo.Opunic.linea AS LINEA, 

ESCA1_1.FECHA AS FECHA
FROM         MGR.Rsql.dbo.ESCA1 ESCA1_1 LEFT OUTER JOIN
                      dbo.Opunic ON ESCA1_1.IDETIQ = dbo.Opunic.Idetiq
Nuevamente mil gracias!!! ...y ojalá a alguien más le sirva!!!...Bye!!!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:01.