Как получить данные с двух разных серверов SQL? - PullRequest
3 голосов
/ 12 октября 2010

У меня есть встроенный запрос, в котором у меня есть одна таблица1 на сервере1 и другая таблица2 на сервере2.Мне нужно объединить эти две таблицы и получить данные.

Я могу сделать это, как подключиться к одному серверу, получить данные и подключиться к следующему серверу ... получить данныеи присоединяйся к ним.

Но есть ли другой способ получше?Я слышал о связанных серверах.Поможет ли это здесь?

Заранее спасибо !!!

1 Ответ

5 голосов
/ 12 октября 2010

Да, настроить связанный сервер на одном сервере с другим.Тогда вы можете просто сделать обычный запрос с объединением.Это будет выглядеть примерно так:

SELECT t1.Col1
    ,  t2.ColA
FROM server1Table t1
INNER JOIN SERVER2.dbname.dbo.tableName t2 ON t1.TheId = t2.TheId

это предполагает, что вы выполняете запрос на сервере Server1.Вы также можете иметь два связанных сервера и ссылаться на них, используя [servername]. [Dbname]. [Schema]. [Table], а затем использовать в SQL как обычно.

В качестве альтернативы вы можете использовать OPENROWSET (но подключенный сервер проще всего, если вы можете настроить его).OpenRowSets выглядят так:

SELECT t1.Col1
    ,  t2.ColA
FROM server1Table t1
INNER JOIN  OPENROWSET('SQLNCLI', 'Server=Server2;Trusted_Connection=yes;',
                       'SELECT t2.ColA, t2.TheId FROM dbname.dbo.tableName') AS t2
  ON t1.TheId = t2.TheId

, и тогда вы можете просто присоединиться к 'a', как будто это локальная таблица.Под капотом он, вероятно, перетягивает все данные в вашу локальную базу данных, поэтому вам следует рассмотреть возможность добавления WHERE к внутреннему запросу, чтобы ограничить строки и получить только нужные вам столбцы.

...