¿Cómo puedo seleccionar datos en la misma consulta de dos bases de datos diferentes que están en dos servidores diferentes en SQL Server?
sql
sql-server
Eric
fuente
fuente
Respuestas:
Lo que está buscando son servidores vinculados. Puede acceder a ellos en SSMS desde la siguiente ubicación en el árbol del Explorador de objetos:
Server Objects-->Linked Servers
o puede usar sp_addlinkedserver .
Solo tienes que configurar uno. Una vez que tenga eso, puede llamar a una tabla en el otro servidor de la siguiente manera:
Tenga en cuenta que el propietario no siempre es
dbo
así, así que asegúrese de reemplazarlo con el esquema que utilice.fuente
[OtherServerName].[OtherDB]..[OtherTable]
, es mejor incluirlo si se conoce.Puede hacerlo usando el servidor vinculado.
Por lo general, los servidores vinculados se configuran para permitir que el Motor de base de datos ejecute una instrucción Transact-SQL que incluya tablas en otra instancia de SQL Server u otro producto de base de datos como Oracle. Muchos tipos de fuentes de datos OLE DB se pueden configurar como servidores vinculados, incluidos Microsoft Access y Excel.
Los servidores vinculados ofrecen las siguientes ventajas:
Lea más sobre los servidores vinculados .
Siga estos pasos para crear un servidor vinculado:
Objetos del servidor -> Servidores vinculados -> Nuevo servidor vinculado
Proporcione el nombre del servidor remoto.
Seleccione el tipo de servidor remoto (SQL Server u otro).
Seleccione Seguridad -> Realizar utilizando este contexto de seguridad y proporcione el inicio de sesión y la contraseña del servidor remoto.
Haga clic en Aceptar y ya está.
Aquí hay un tutorial simple para crear un servidor vinculado.
O
Puede agregar un servidor vinculado mediante la consulta.
Sintaxis:
Lea más sobre sp_addlinkedserver .
Debe crear un servidor vinculado solo una vez . Después de crear un servidor vinculado, podemos consultarlo de la siguiente manera:
fuente
También puede ver el uso de servidores vinculados. Los servidores vinculados también pueden ser otros tipos de fuentes de datos, como las plataformas de DB2. Este es un método para intentar acceder a DB2 desde una llamada SQL Server TSQL o Sproc ...
fuente
Could not find server '88.208.229.164' in sys.servers. Verify that the correct server name was specified. If necessary, execute the stored procedure sp_addlinkedserver to add the server to sys.servers.
Consultar en 2 bases de datos diferentes es una consulta distribuida. Aquí hay una lista de algunas técnicas más los pros y los contras:
fuente
prueba esto:
fuente
Todas estas son buenas respuestas, pero esta falta y tiene sus propios usos poderosos. Posiblemente no se ajusta a lo que el OP quería, pero la pregunta era vaga y siento que otros pueden encontrar su camino aquí. Básicamente, puede usar 1 ventana para ejecutar simultáneamente una consulta en varios servidores, así es como:
En SSMS abrir Servidores registrados y crear un nuevo grupo de servidor bajo grupos locales del servidor .
En este grupo, cree un nuevo registro de servidor para cada servidor que desee consultar. Si los nombres de DB son diferentes, asegúrese de establecer un valor predeterminado para cada uno en las propiedades.
Ahora regrese al Grupo que creó en el primer paso, haga clic derecho y seleccione Nueva consulta. Se abrirá una nueva ventana de consulta y cualquier consulta que ejecute se ejecutará en cada servidor del grupo. Los resultados se presentan en un único conjunto de datos con un nombre de columna adicional que indica de qué servidor proviene el registro. Si usa la barra de estado, notará que el nombre del servidor se reemplaza por múltiple .
fuente
Tuve el mismo problema para conectar un SQL_server 2008 a un SQL_server 2016 alojado en un servidor remoto. Otras respuestas no me funcionaron directamente. Escribo mi solución ajustada aquí, ya que creo que puede ser útil para otra persona.
Una respuesta extendida para conexiones remotas de IP db:
Paso 1: enlace de servidores
... donde
SRV_NAME
es un nombre inventado. Lo usaremos para referirnos al servidor remoto de nuestras consultas.aaa.bbb.ccc.ddd
es la dirección IP del servidor remoto que aloja su base de datos SQLserver.Paso 2: Ejecute sus consultas Por ejemplo:
...¡y eso es!
Detalles de sintaxis: sp_addlinkedserver y sp_addlinkedsrvlogin
fuente
Creó una definición de servidor vinculado en un servidor al otro (necesita SA para hacer esto), luego simplemente haga referencia a ellos con nombres de 4 partes (vea BOL).
fuente
Servidor 2008:
Cuando esté en SSMS conectado al servidor1.DB1 e intente:
como otros señalaron, si no funciona es porque el servidor no está vinculado.
Me sale el error:
Para agregar el servidor:
referencia: Para agregar el servidor usando sp_addlinkedserver Enlace: [1]: Para agregar el servidor usando sp_addlinkedserver
Para ver lo que hay en su servidor sys.servers solo consulte:
fuente
fuente
Como @ Super9 contó sobre OPENDATASOURCE utilizando la autenticación de SQL Server con el proveedor de datos SQLOLEDB . Solo estoy publicando aquí un fragmento de código para una tabla en la base de datos del servidor actual donde se está ejecutando el código y otra en otro servidor '192.166.41.123'
fuente
así que debería ir así:
fuente
Sé que esta es una vieja pregunta, pero uso sinónimos. Supuestamente, la consulta se ejecuta dentro del servidor de base de datos A, y busca una tabla en un servidor de base de datos B que no existe en el servidor A. Agregue luego un sinónimo en la base de datos A que llama a su tabla desde el servidor B. Su consulta no tiene que incluya esquemas o nombres de bases de datos diferentes, simplemente llame al nombre de la tabla de la forma habitual y funcionará.
No es necesario vincular servidores, ya que los sinónimos por ejemplo son una especie de enlace.
fuente
Objetos del servidor ---> servidor vinculado ---> nuevo servidor vinculado
En el servidor vinculado, escriba el nombre del servidor o la dirección IP para otro servidor y seleccione SQL Server In Security select (se debe hacer usando este contexto de seguridad) Escriba el nombre de usuario y la contraseña para otro servidor
Ahora conectado, luego use
fuente
Solución simplificada para agregar servidores vinculados
Primer servidor
Segundo inicio de sesión
Ejecutar consultas vinculadas a db local
fuente