25

I added a linked server, which is showing in the linked server list, but when I query it, it throws an error with the db server name.

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

Msg 102, Level 15, State 1, Line 1
Incorrect syntax near 'aa-db-dev01'.

4

7 回答 7

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

This works for me. SSMS intellisense may still underline this as a syntax error, but it should work if your linked server is configured and your query is otherwise correct.

于 2009-01-30T14:47:54.720 回答
27

您需要删除链接服务器名称周围的引号。它应该是这样的:

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

于 2009-02-06T13:14:39.690 回答
6

您可以使用:

SELECT * FROM [aa-db-dev01].[TestDB].[dbo].[users];
于 2012-09-14T06:11:00.713 回答
3

我使用开放查询来执行此任务,如下所示:

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]'
)
于 2017-05-11T14:09:51.700 回答
3

接受的答案对我有用。

此外,在 MSSQLMS 中,您可以浏览对象资源管理器中的树到要查询的表。

[服务器] -> 服务器对象 -> 链接服务器 -> [链接服务器] -> 目录 -> [数据库] -> [表]

然后右键单击,将表编写为,选择到,新建查询窗口

并且将使用正确的 FROM 为您生成查询,您可以在 JOIN 中使用它

于 2019-03-12T23:35:25.497 回答
2

试试看Select * from openquery("aa-db-dev01",'Select * from users'),数据库连接应该在链接服务器配置中定义

于 2013-11-11T05:50:26.037 回答
2

如果链接服务器名称是 IP 地址,则以下代码为真:

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

只是,请注意 IP 地址部分周围的 []。

于 2020-02-12T13:00:32.413 回答