SQL SERVER中DBLINK的實現

一、 創建鏈接服務器

1、使用sp_addlinkedserver來增加鏈接

EXEC sp_addlinkedserver
@server='192.168.2.66',--被訪問的服務器別名(習慣上直接使用目標服務器IP,或取個別名如:JOY)
@srvproduct='',
@provider='SQLOLEDB',
@datasrc='192.168.2.66' --要訪問的服務器

2、使用sp_addlinkedsrvlogin 來增加用戶登錄鏈接

EXEC sp_addlinkedsrvlogin
'192.168.2.66', --被訪問的服務器別名(如果上面sp_addlinkedserver中使用別名JOY,則這裏也是JOY)
'false',
NULL,
'sa', --帳號
'test123' --密碼

3、查看當前鏈接情況:

select * from sys.servers;

4、使用 sp_helpserver 來顯示可用的服務器

Exec sp_helpserver

5、刪除已經存在的某個鏈接

Exec sp_droplinkedsrvlogin 服務器別名,Null
Exec sp_dropserver 服務器別名
EXEC SP_DROPSERVER'ITSV' ,'DROPLOGINS'

可能會遇到的問題:
exec sp_dropserver 'JOY’執行失敗,

報錯信息:仍有對服務器 ‘JOY’ 的遠程登錄或鏈接登錄。

解決方法:

exec sp_droplinkedsrvlogin 'JOY',null

exec sp_dropserver 'JOY'

6、查詢示例

SELECT * FROM ITSV.數據庫名.DBO.表名

舉例(訪問目標服務器上的數據庫Music,查看其中表test的內容):
如果建立鏈接時的別名是目標服務器IP,即192.168.2.66 ,則:

select * from [192.168.2.66].[Music].dbo.test

如果建立鏈接時的別名是JOY, 則:

select * from [JOY].[Music].dbo.test

7、導入示例

SELECT * INTOFROM ITSV.數據庫名.DBO.表名

二、連接遠程/局域網數據(OPENROWSET/OPENQUERY/OPENDATASOURCE)–

1、OPENROWSET --查詢示例

SELECT * FROM OPENROWSET('SQLOLEDB' ,'SQL服務器名' ;'用戶名' ;'密碼' , 數據庫名.DBO.表名)

–生成本地表

SELECT * INTOFROM OPENROWSET('SQLOLEDB' ,'SQL服務器名' ;'用戶名' ;'密碼' , 數據庫名.DBO.表名)

–把本地表導入遠程表

INSERT OPENROWSET('SQLOLEDB' ,'SQL服務器名' ;'用戶名' ;'密碼' , 數據庫名.DBO.表名)
SELECT * FROM 本地表

–更新本地表

UPDATE B SET B.列A= A.列A 
				FROM OPENROWSET('SQLOLEDB' ,'SQL服務器名' ;'用戶名' ;'密碼' , 數據庫名.DBO.表名) AS A 
				INNER JOIN 本地表 B ON A.COLUMN1= B.COLUMN1

–OPENQUERY用法需要創建一個連接

–首先創建一個連接創建鏈接服務器

EXEC SP_ADDLINKEDSERVER'ITSV' ,'' , 'SQLOLEDB' ,'遠程服務器名或IP地址'

–查詢

SELECT * FROM OPENQUERY(ITSV ,'SELECT * FROM 數據庫.DBO.表名')

–把本地表導入遠程表

 INSERT OPENQUERY(ITSV ,'SELECT * FROM 數據庫.DBO.表名')
 SELECT * FROM 本地表

–更新本地表

UPDATE BSET B.列B=A.列B 
				FROM OPENQUERY(ITSV , 'SELECT * FROM 數據庫.DBO.表名')AS A 
				INNER JOIN 本地表 BON A.列A=B.列A

–3、OPENDATASOURCE/OPENROWSET

SELECT * FROM OPENDATASOURCE('SQLOLEDB' ,'DATA SOURCE=IP/SERVERNAME ; USER ID=登陸名 ; PASSWORD=密碼').TEST.DBO.ROY_TA

–把本地表導入遠程表

 INSERT OPENDATASOURCE('SQLOLEDB' ,'DATA SOURCE=IP/SERVERNAME ; USER ID=登陸名 ; PASSWORD=密碼').數據庫.DBO.表名
 SELECT * FROM 本地表
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章