62

假设我有一个名称testdbtest server的数据库。我在产品服务器中还有一个名为proddb的数据库。

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

我怎样才能做到这一点SQL Server

另外,我可以使用oracle中的数据库链接来做到这一点。但是如何在SQL Server中做到这一点?

4

7 回答 7

62

你需要 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]
于 2009-04-06T08:30:02.417 回答
45

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

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

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

于 2016-12-13T17:45:39.577 回答
11

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

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]
于 2011-05-04T14:13:19.277 回答
5

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

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

于 2009-04-06T05:28:16.597 回答
3

使用 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]
于 2019-11-23T08:35:30.540 回答
1

尝试使用 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    
于 2019-11-26T11:46:18.447 回答
0
Select * from [Database].[dbo].[TableName]
select * from [dbTest].[dbo].[Products]
于 2021-08-10T11:16:48.657 回答