如何从 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 2012 Express 如何从一列中提取信息并将其与具有表达式限制的另一列进行比较
如何从MS SQL Server 2012中的不同表中减去连续的行?