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

Posted

技术标签:

【中文标题】如何从 SQL Server 中的另一个数据库中选择表的数据?【英文标题】:How to select data of a table from another database in SQL Server? 【发布时间】:2009-04-06 05:25:54 【问题描述】:

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

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

如何在 SQL Server 中做到这一点?

另外,我可以使用 oracle 中的 database link 来完成。但是如何在 SQL Server 中做到这一点?

【问题讨论】:

如果您使用的是 SQL Server 2012 或更高版本,请跳至***.com/a/41127437/733092。 【参考方案1】:

你需要 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]

【讨论】:

如果需要通过不同的凭据,使用 EXEC sp_addlinkedsrvlogin 'servername', 'false', NULL, 'SqlUser', 'password' 我一直在努力让它工作,发现您也可以使用 SSMS (sqlshack.com/…) 执行此操作,然后它会向您显示所有可用的各种安全等选项 - 我发现我必须设置将其设置为使用当前登录安全上下文以使其工作。【参考方案2】:

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

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

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

【讨论】:

不适用于 Azure。如果你在 Azure 中需要它,试试这个:***.com/questions/45715668 这在 Azure 中现在可以在两个数据库中使用相同的用户【参考方案3】:

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

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

根据上面的评论:

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

例如

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

【讨论】:

【参考方案4】:

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

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

【讨论】:

表在不同的服务器上。 如何链接到服务器以及如何选择数据?请提供步骤。谢谢【参考方案5】:

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

【讨论】:

【参考方案6】:

尝试使用 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    

【讨论】:

【参考方案7】:
Select * from [Database].[dbo].[TableName]
select * from [dbTest].[dbo].[Products]

【讨论】:

以上是关于如何从 SQL Server 中的另一个数据库中选择表的数据?的主要内容,如果未能解决你的问题,请参考以下文章

需要从 SQL Server 中的另一个表访问用户名

SQL Server:将列数据值从一个表复制到同一数据库中的另一个表

SQL Server 2012 Express 如何从一列中提取信息并将其与具有表达式限制的另一列进行比较

如何从MS SQL Server 2012中的不同表中减去连续的行?

如何使用 SQL Query 在 SQL Server 中的表级别进行镜像或复制

当用户在 MS Access 中修改表中的另一列时,如何在 SQL Server 中将列设置为今天的日期 [关闭]