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

时间:2009-04-06 05:25:55

标签: sql sql-server database linked-server

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

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

我如何在 SQL Server

中执行此操作

另外,我可以使用 oracle 中的数据库链接来实现。但是如何在 SQL Server

中做到这一点

7 个答案:

答案 0 :(得分:57)

您需要sp_addlinkedserver()

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

示例:

exec sp_addlinkedserver @server = 'test'

然后

select * from [server].[database].[schema].[table]

在你的例子中:

select * from [test].[testdb].[dbo].[table]

答案 1 :(得分:21)

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

SELECT * FROM [TARGET_DATABASE].dbo.[TABLE] AS _TARGET

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

答案 2 :(得分:11)

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

EXEC sp_addlinkedserver @server='PWA_ProjectServer', @srvproduct='',
@provider='SQLOLEDB', @datasrc='SERVERNAME\PWA_ProjectServer'

根据上述评论:

select * from [server].[database].[schema].[table]

e.g。

select top 6 * from [PWA_ProjectServer].[PWA_ProjectServer_Reporting].[dbo].[MSP_AdminStatus]

答案 3 :(得分:5)

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

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

答案 4 :(得分:0)

使用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]

答案 5 :(得分:0)

尝试使用OPENDATASOURCE 语法如下:

select * from OPENDATASOURCE ('SQLNCLI', 'Data Source=192.168.6.69;Initial Catalog=AnotherDatabase;Persist Security Info=True;User ID=sa;Password=AnotherDBPassword;MultipleActiveResultSets=true;' ).HumanResources.Department.MyTable    

答案 6 :(得分:0)

Select * from [Database].[dbo].[TableName]
select * from [dbTest].[dbo].[Products]