Запрос связанного сервера SQL - PullRequest
23 голосов
/ 30 января 2009

Я добавил связанный сервер, который отображается в списке связанных серверов, но когда я запрашиваю его, он выдает ошибку с именем сервера базы данных.

EXEC sp_helpserver
EXEC sp_addlinkedserver 'aa-db-dev01'
Select * from openquery('aa-db-dev01','Select * from TestDB.dbo.users')

Сообщение 102, Уровень 15, Состояние 1, Строка 1
Неверный синтаксис рядом с 'aa-db-dev01'.

Ответы [ 6 ]

42 голосов
/ 30 января 2009
SELECT * FROM [server].[database].[schema].[table]

Это работает для меня. IntelliSense SSMS может все еще подчеркивать это как синтаксическую ошибку, но она должна работать, если ваш связанный сервер настроен, а ваш запрос в противном случае правильный.

24 голосов
/ 06 февраля 2009

Вам необходимо удалить кавычки вокруг имени связанного сервера. Должно быть так:

Выбрать * из открытого запроса (aa-db-dev01, 'Выбрать * из TestDB.dbo.users')

6 голосов
/ 14 сентября 2012

Вы можете использовать:

SELECT * FROM [aa-db-dev01].[TestDB].[dbo].[users];
3 голосов
/ 11 мая 2017

Я использую открытый запрос для выполнения этой задачи так:

select top 1 *
INTO [DATABASE_TO_INSERT_INTO].[dbo].[TABLE_TO_SELECT_INTO]
from openquery(
    [LINKED_SERVER_NAME],
    'select * from [DATABASE_ON_LINKED_SERVER].[dbo].[TABLE_TO_SELECT_FROM]'
)

В приведенном выше примере открытый запрос используется для выбора данных из базы данных на связанном сервере в базу данных по вашему выбору.

Примечание. Для полноты справки вы можете выполнить простой выбор, например, так:

select top 1 * from openquery(
    [LINKED_SERVER_NAME],
    'select * from [DATABASE_ON_LINKED_SERVER].[dbo].[TABLE_TO_SELECT_FROM]'
)
1 голос
/ 13 марта 2019

Принятый ответ работает для меня.

Кроме того, в MSSQLMS вы можете просмотреть дерево в обозревателе объектов в таблице, к которой вы хотите запросить.

[Сервер] -> Объекты сервера -> Связанные серверы -> [Связанный сервер] -> Каталоги -> [База данных] -> [таблица]

затем щелкните правой кнопкой мыши, Script Table as, SELECT To, окно нового запроса

И запрос будет сгенерирован для вас с правом FROM, которое вы можете использовать в своем JOIN

1 голос
/ 11 ноября 2013

try Select * from openquery("aa-db-dev01",'Select * from users'), соединение с базой данных должно быть определено в конфигурации связанного сервера

...