Как выбрать данные в одном запросе из двух разных баз данных, которые находятся на двух разных серверах в SQL Server?
sql
sql-server
Эрик
источник
источник
Ответы:
То, что вы ищете, это связанные серверы. Вы можете получить к ним в SSMS из следующего места в дереве обозревателя объектов:
Server Objects-->Linked Servers
или вы можете использовать sp_addlinkedserver .
Вам нужно только настроить один. После этого вы можете вызвать таблицу на другом сервере следующим образом:
Обратите внимание, что владелец не всегда
dbo
, поэтому не забудьте заменить его на любую схему, которую вы используете.источник
[OtherServerName].[OtherDB]..[OtherTable]
, лучше включить его, если он известен.Вы можете сделать это с помощью Linked Server.
Обычно связанные серверы настраиваются так, чтобы компонент Database Engine мог выполнять инструкцию Transact-SQL, которая включает таблицы в другом экземпляре SQL Server или другом продукте базы данных, таком как Oracle. Многие типы источников данных OLE DB могут быть настроены как связанные серверы, включая Microsoft Access и Excel.
Связанные серверы предлагают следующие преимущества:
Узнайте больше о связанных серверах .
Выполните следующие действия, чтобы создать связанный сервер:
Объекты сервера -> Связанные серверы -> Новый связанный сервер
Укажите имя удаленного сервера.
Выберите тип удаленного сервера (SQL Server или другой).
Выберите Security -> Be made с помощью этого контекста безопасности и введите логин и пароль удаленного сервера.
Нажмите ОК, и все готово!
Вот простое руководство по созданию связанного сервера.
ИЛИ
Вы можете добавить связанный сервер, используя запрос.
Синтаксис:
Узнайте больше о sp_addlinkedserver .
Вы должны создать связанный сервер только один раз . После создания связанного сервера мы можем запросить его следующим образом:
источник
Вы также можете посмотреть на использование связанных серверов. Связанные серверы могут быть и другими типами источников данных, такими как платформы DB2. Это один из способов получить доступ к DB2 из вызова SQL Server TSQL или Sproc ...
источник
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.
Запрос к 2 различным базам данных - это распределенный запрос. Вот список некоторых методов плюс за и против:
источник
попробуй это:
источник
Это все хорошие ответы, но этот отсутствует, и он имеет свои собственные мощные применения. Возможно, это не соответствует тому, что хотел ОП, но вопрос был расплывчатым, и я чувствую, что другие могут найти свой путь здесь. Как правило, вы можете использовать 1 окно для одновременного выполнения запроса к нескольким серверам, вот как:
В SSMS откройте Зарегистрированные серверы и создайте новую группу серверов в разделе Группы локальных серверов .
В этой группе создайте регистрацию нового сервера для каждого сервера, который вы хотите запросить. Если имена БД отличаются, убедитесь, что для каждого из них задано значение по умолчанию.
Теперь вернитесь к группе, которую вы создали на первом шаге, щелкните правой кнопкой мыши и выберите New Query. Откроется новое окно запроса, и любой выполняемый вами запрос будет выполнен на каждом сервере в группе. Результаты представлены в одном наборе данных с дополнительным именем столбца, указывающим, с какого сервера поступила запись. Если вы используете строку состояния, вы заметите, что имя сервера заменено на несколько .
источник
У меня была такая же проблема, чтобы подключить SQL_server 2008 к SQL_server 2016, размещенному на удаленном сервере. Другие ответы не сработали для меня прямо. Я пишу здесь свое решение, так как думаю, что оно может быть полезным для кого-то другого.
Расширенный ответ для удаленных соединений БД IP:
Шаг 1: связать серверы
... где
SRV_NAME
придуманное имя. Мы будем использовать его для обращения к удаленному серверу из наших запросов.aaa.bbb.ccc.ddd
IP-адрес удаленного сервера, на котором размещена ваша БД SQLserver.Шаг 2: Запустите ваши запросы Например:
...и это все!
Детали синтаксиса: sp_addlinkedserver и sp_addlinkedsrvlogin
источник
Создайте определение связанного сервера на одном сервере с другим (для этого вам нужен SA), а затем просто присвойте им 4-элементное именование (см. BOL).
источник
Server 2008:
Когда в SSMS подключен к server1.DB1 и попробуйте:
как отмечали другие, если это не работает, это потому, что сервер не связан.
Я получаю ошибку:
Чтобы добавить сервер:
ссылка: чтобы добавить сервер с помощью sp_addlinkedserver Ссылка: [1]: чтобы добавить сервер с помощью sp_addlinkedserver
Чтобы увидеть, что находится в вашем sys.servers, просто запросите его:
источник
источник
Как @ Super9 рассказал об OPENDATASOURCE с использованием аутентификации SQL Server с поставщиком данных SQLOLEDB . Я просто публикую здесь фрагмент кода для одной таблицы в текущей базе данных сервера, где выполняется код, а другой на другом сервере '192.166.41.123'
источник
так что это должно идти так -
источник
Я знаю, что это старый вопрос, но я использую синонимы. Предположительно, запрос выполняется на сервере базы данных A и ищет таблицу на сервере базы данных B, которая не существует на сервере A. Добавьте затем синоним в базу данных A, которая вызывает вашу таблицу с сервера B. Ваш запрос не должен включите любые схемы или разные имена баз данных, просто вызовите имя таблицы, как обычно, и это будет работать.
Нет необходимости связывать серверы, так как синонимы, скажем, являются своего рода связью.
источник
Объекты сервера ---> связанный сервер ---> новый связанный сервер
На связанном сервере введите имя или IP-адрес сервера для другого сервера и выберите SQL Server. В разделе «Безопасность» выберите (сделать это в контексте безопасности). Введите логин и пароль для другого сервера.
Теперь подключен, затем используйте
источник
Упрощенное решение для добавления связанных серверов
Первый сервер
Второй вход
Выполнять запросы из связанных с локальными БД
источник