| |||
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... |
| |||
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:
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):"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())" Sintax:
Código:
OPENROWSET('provider_name', {'datasource';'user_id';'password' | 'provider_string'}, {[catalog.][schema.]object | 'query'}) Usage:
Código:
Aunque no entiendo bien como funcionan los store procedures!!!... 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 |
| ||||
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." |
| |||
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... |
| ||||
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." |
| |||
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??... |
| ||||
Re: como vincular 2 servidores??? Cita: 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: 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." |
| |||
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:
Pero al ejecutarlo me dió el siguiente error:SELECT * FROM STR.Rast.dbo.opunicos opunicos_1 WHERE (IDETIQ IN (SELECT IDETIQ FROM MGR.Rsql.dbo.ESCA1))
Código:
ejecuto el sp_addlinkedserver y me da el siguiente error:"No se encuentra el servidor STR en sysservers. Ejecute sp_addlinkedserver para agreagar el servidor a sysservers"
Código:
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... 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. |
| ||||
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." |
| |||
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:
Nuevamente mil gracias!!! ...y ojalá a alguien más le sirva!!!...Bye!!! 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 |