假设我有一个名称testdb
在test server的数据库。我在产品服务器中还有一个名为proddb的数据库。
现在我想从proddb数据库中选择testdb数据库表的数据。
我怎样才能做到这一点SQL Server
?
另外,我可以使用oracle中的数据库链接来做到这一点。但是如何在SQL Server中做到这一点?
假设我有一个名称testdb
在test server的数据库。我在产品服务器中还有一个名为proddb的数据库。
现在我想从proddb数据库中选择testdb数据库表的数据。
我怎样才能做到这一点SQL Server
?
另外,我可以使用oracle中的数据库链接来做到这一点。但是如何在SQL Server中做到这一点?
你需要 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]
在 SQL Server 2012 及更高版本中,您不需要创建链接。可以直接执行
SELECT * FROM [TARGET_DATABASE].dbo.[TABLE] AS _TARGET
我不知道以前版本的 SQL Server 是否也能正常工作
我以前使用它来通过链接服务器对另一台服务器和数据库设置查询:
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]
要进行跨服务器查询,请查看帮助文件中的系统存储过程:sp_addlinkedserver。
链接服务器后,您可以对其运行查询。
使用 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]
尝试使用 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
Select * from [Database].[dbo].[TableName]
select * from [dbTest].[dbo].[Products]