Запрос связанного сервера SQL

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

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'.

5 ответов

SELECT * FROM [server].[database].[schema].[table]

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

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

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

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

SELECT * FROM [aa-db-dev01].[TestDB].[dbo].[users];

The accepted answer works for me.

Also, in MSSQLMS, you can browse the tree in the Object Explorer to the table you want to query.

[Server] -> Server Objects -> Linked Servers -> [Linked server] -> Catalogs -> [Database] -> [table]

then Right click, Script Table as, SELECT To, New Query Window

And the query will be generated for you with the right FROM, which you can use in your JOIN

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

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]'
)

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

Если имя связанного сервера является IP-адресом, следующий код верен:

select * from [1.2.3.4,1433\MSSQLSERVER].test.dbo.Table1

Просто обратите внимание на [] вокруг раздела IP-адресов.

Другие вопросы по тегам