Запрос связанного сервера 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-адресов.