簡體   English   中英

如何從SQL Server中的另一個數據庫中選擇表的數據?

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

假設我在test server 中有一個名為testdb的數據庫。 我在prod服務器中還有一個名為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 > context menu > 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]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM