我添加了一个链接服务器,它显示在链接服务器列表中,但是当我查询它时,它会引发数据库服务器名称的错误。
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 'aa-db-dev01'附近的语法不正确。
SELECT * FROM [server].[database].[schema].[table]
这适合我。 SSMS intellisense可能仍会将此作为语法错误强调,但如果您的链接服务器已配置且查询正确,则它应该有效。
您需要从链接服务器名称周围删除引号。它应该是这样的:
从openquery中选择*(aa-db-dev01,'Select * from TestDB.dbo.users')
您可以使用:
SELECT * FROM [aa-db-dev01].[TestDB].[dbo].[users];
我使用open query来执行此任务,如下所示:
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')
,应该在链接服务器配置中定义数据库连接
接受的答案对我有用。
此外,在MSSQLMS中,您可以将对象资源管理器中的树浏览到要查询的表。
[Server] - > Server Objects - > Linked Servers - > [Linked server] - > Catalogs - > [Database] - > [table]
然后右键单击,Script Table as,SELECT To,New Query Window
并且将使用正确的FROM为您生成查询,您可以在JOIN中使用该查询