如何从SQL Server中的另一个数据库中选择表的数据?

use*_*431 46 sql database sql-server linked-server

假设,我有一个testdb测试服务器中命名的数据库.此外,我在prod服务器中有一个名为proddb的数据库.

现在我想从proddb数据库中选择testdb数据库表的数据.

我怎么能这样做SQL Server

另外,我可以用做数据库链接预言.但是如何在SQL Server中做到这一点?

Mat*_*ell 57

你需要sp_addlinkedserver()

http://msdn.microsoft.com/en-us/library/ms190479.aspx

例:

exec sp_addlinkedserver @server = 'test'
Run Code Online (Sandbox Code Playgroud)

然后

select * from [server].[database].[schema].[table]
Run Code Online (Sandbox Code Playgroud)

在你的例子中:

select * from [test].[testdb].[dbo].[table]
Run Code Online (Sandbox Code Playgroud)

  • 如果需要传递不同的凭据,请使用EXEC sp_addlinkedsrvlogin'servername','false',NULL,'SqlUser','password' (4认同)

Art*_*ald 24

在SQL Server 2012及更高版本中,您无需创建链接.你可以直接执行

SELECT * FROM [TARGET_DATABASE].dbo.[TABLE] AS _TARGET
Run Code Online (Sandbox Code Playgroud)

我不知道以前版本的SQL Server是否也能正常工作


Bri*_*lls 11

我之前使用过这个来通过链接服务器设置对另一个服务器和数据库的查询:

EXEC sp_addlinkedserver @server='PWA_ProjectServer', @srvproduct='',
@provider='SQLOLEDB', @datasrc='SERVERNAME\PWA_ProjectServer'
Run Code Online (Sandbox Code Playgroud)

根据以上评论:

select * from [server].[database].[schema].[table]
Run Code Online (Sandbox Code Playgroud)

例如

select top 6 * from [PWA_ProjectServer].[PWA_ProjectServer_Reporting].[dbo].[MSP_AdminStatus]
Run Code Online (Sandbox Code Playgroud)


Iho*_*nko 6

使用 Microsoft SQL Server Management Studio,您可以创建Linked Server. 首先连接到当前(本地)服务器,然后转到Server Objects>>Linked Servers上下文菜单 > New Linked Server。在窗口中,New Linked Server您必须指定远程服务器所需的服务器名称、真实服务器名称或 IP 地址(数据源)和凭据(安全页面)。

此外,您还可以从链接服务器中选择数据:

select * from [linked_server_name].[database].[schema].[table]
Run Code Online (Sandbox Code Playgroud)


Mit*_*ker 5

要执行跨服务器查询,请检查系统存储过程:帮助文件中的sp_addlinkedserver.

连接服务器后,您可以针对它运行查询.