Выбор данных с двух разных серверов в SQL Server - PullRequest
327 голосов
/ 17 июля 2009

Как выбрать данные в одном запросе из двух разных баз данных, которые находятся на двух разных серверах в SQL Server?

Ответы [ 15 ]

0 голосов
/ 17 ноября 2018

Как @ Super9 рассказал об OPENDATASOURCE с использованием аутентификации SQL Server с поставщиком данных SQLOLEDB .Я просто публикую здесь фрагмент кода для одной таблицы в текущей базе данных сервера, где выполняется код, а другой - на другом сервере '192.166.41.123'

SELECT top 2 * from dbo.tblHamdoonSoft  tbl1 inner JOIN  
OpenDataSource('SQLOLEDB','Data Source=192.166.41.123;User ID=sa;Password=hamdoonsoft')
.[TestDatabase].[dbo].[tblHamdoonSoft1] tbl2 on tbl1.id = tbl2.id
0 голосов
/ 05 ноября 2018

Упрощенное решение для добавления связанных серверов

Первый сервер

EXEC sp_addlinkedserver @server='ip,port\instancename'

Второй логин

EXEC sp_addlinkedsrvlogin 'ip,port\instancename', 'false', NULL, 'remote_db_loginname', 'remote_db_pass'

Выполнять запросы из связанных с локальными БД

INSERT INTO Tbl (Col1, Col2, Col3)
SELECT Col1, Col2, Col3
FROM [ip,port\instancename].[linkedDBName].[linkedTblSchema].[linkedTblName]
0 голосов
/ 25 марта 2017

Я знаю, что это старый вопрос, но я использую синонимы. Предположительно, запрос выполняется на сервере базы данных A и ищет таблицу на сервере базы данных B, которая не существует на сервере A. Добавьте затем синоним в базу данных A, которая вызывает вашу таблицу с сервера B. Ваш запрос не должен включите любые схемы или разные имена баз данных, просто вызовите имя таблицы, как обычно, и оно будет работать.

Нет необходимости связывать серверы, так как синонимы, скажем, являются своего рода связыванием.

0 голосов
/ 26 августа 2015

Объекты сервера ---> связанный сервер ---> новый связанный сервер

На связанном сервере напишите имя сервера или IP-адрес для другого сервера и выберите SQL Server В разделе «Безопасность» выберите (сделать, используя этот контекст безопасности). Напишите логин и пароль для другого сервера

Теперь подключено, затем используйте

Select * from [server name or ip addresses ].databasename.dbo.tblname
0 голосов
/ 27 февраля 2010
sp_addlinkedserver('servername')

так должно быть так -

select * from table1
unionall
select * from [server1].[database].[dbo].[table1]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...