简体   繁体   English

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

[英]How to select data of a table from another database in SQL Server?

Suppose that I have a database which name is testdb in test server .假设我在test server 中有一个名为testdb的数据库。 I also have a database named proddb in prod server.我在prod服务器中还有一个名为proddb的数据库。

Now I want to select data of a table of testdb database from proddb database.现在我想从proddb数据库中选择testdb数据库表的数据。

How can I do that in SQL Server ?我如何在SQL Server做到这一点?

Also, I can do it using database link in oracle .另外,我可以使用oracle 中的数据库链接来完成。 But how can do that in SQL Server ?但是如何在SQL Server 中做到这一点?

You need sp_addlinkedserver()你需要 sp_addlinkedserver()

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

Example:例子:

exec sp_addlinkedserver @server = 'test'

then然后

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

In your example:在你的例子中:

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

In SQL Server 2012 and above, you don't need to create a link.在 SQL Server 2012 及更高版本中,您不需要创建链接。 You can execute directly可以直接执行

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

I don't know whether previous versions of SQL Server work as well我不知道以前版本的 SQL Server 是否也能正常工作

I've used this before to setup a query against another server and db via linked server:我之前使用过它通过链接服务器设置对另一台服务器和数据库的查询:

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

per the comment above:根据上面的评论:

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

eg例如

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

To do a cross server query, check out the system stored procedure: sp_addlinkedserver in the help files.要进行跨服务器查询,请查看帮助文件中的系统存储过程: sp_addlinkedserver

Once the server is linked you can run a query against it.链接服务器后,您可以对其运行查询。

Using Microsoft SQL Server Management Studio you can create Linked Server .使用 Microsoft SQL Server Management Studio,您可以创建Linked Server First make connection to current (local) server, then go to Server Objects > Linked Servers > context menu > New Linked Server .首先连接到当前(本地)服务器,然后转到Server Objects > Linked Servers > context menu > New Linked Server In window New Linked Server you have to specify desired server name for remote server, real server name or IP address (Data Source) and credentials (Security page).在窗口New Linked Server您必须为远程服务器指定所需的服务器名称、真实服务器名称或 IP 地址(数据源)和凭据(安全页面)。

And further you can select data from linked server:您还可以从链接服务器中选择数据:

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]

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM