程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> 跨數據庫實現數據交流

跨數據庫實現數據交流

編輯:關於SqlServer

通常情況下,我們的CRUD操作都在單一數據庫中進行。但是,也可能會遇到需要進行跨數據交流的情況。對此,我以跨數據庫進行表的訪問為例,稍微總結了下。

一、同SQL SERVER

這個最簡單。直接在表名前加上"[數據庫名]."就可以了。

例:

SELECT * FROM [DestinationDBName].dbo.DestinationTableName

二、跨SQL SERVER

 主要介紹兩種方法:

(一)通過鏈接服務器

1.先執行系統存儲過程 sp_addlinkedserver :

EXEC sp_addlinkedserver 
@server='DestinationDBAlias',--目標數據庫的別名,在連接並登錄後,就可以用它來訪問數據
@srvproduct='',
@provider='SQLOLEDB',
@datasrc='DestinationServerIP\ServerName'--通常用"IP\端口名"組成,如果服務器上只裝了一個MSSQL SERVER,或者裝了多個MS SQLSERVER,但要訪問的是默認端口,就不用加端口名

2.再執行系統存儲過程 sp_addlinkedsrvlogin:

EXEC sp_addlinkedsrvlogin 
@rmtsrvname='DestinationDBAlias',--注意這裡的名字應與第一步sp_addlinkedserver中@server值一致
@useself='false',
@locallogin=NULL,
@rmtuser='UserName',
@rmtpassword='Password'

3.現在,我們可以通過目標數據庫別名訪問數據:

例:

SELECT * FROM [DestinationDBAlias].dbo.DestinationTableName

4.使用結束,不要忘了斷開與目標數據庫的連接:

EXEC sp_dropserver 
@server='DestinationDBAlias',--注意這裡的名字應與第一步sp_addlinkedserver中@server值一致
@droplogins='droplogins'


(二)使用OPENDATASOURCE/OPENROWSET連接遠程服務器

SELECT * FROM OPENDATASOURCE
('SQLOLEDB', --provider_name
'Data Source=DestinationServerIP;User ID=UserName;Password=Password' --provider_string(datasource;user_id;password)
).[DestinationDBAlias].dbo.DestinationTableName

SELECT * FROM OPENROWSET
('SQLOLEDB',--provider_name
'DestinationServerIP';'UserName';'Password',--provider_string(datasource;user_id;password)
'SELECT * FROM [DestinationDBAlias].dbo.DestinationTableName')--query_string

函數OPENQUERY也能實現跨服務器訪問數據,但它是基於已經建立鏈接服務器的基礎上來操作的,應屬第一種方法,在此不再贅述。

以上就是跨數據庫實現數據交流的方法,希望大家可以親自動手操作一下。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved