1. 建立連接服務器并建立鏈接服務器登陸
EXEC?? sp_addlinkedserver 'test_remot','','MSDASQL',NULL,NULL,'DRIVER={SQL Server};SERVER=10.64.29.14;UID=sa;PWD=sa;'??
EXEC?? sp_addlinkedsrvlogin @rmtsrvname='test_remot',@useself='false',@locallogin='sa',@rmtuser='sa',@rmtpassword='sa'??
GO
這里只對已填的參數作下說明,其它的可以到MSDN查閱
'test_remot':鏈接服務器名稱
'MSDASQL':驅動類型
'DRIVER={SQL Server};SERVER=10.64.29.14;UID=sa;PWD=sa2005;':驅動連接字符串,SERVER(遠程服務器IP) UID(遠程數據庫登錄用戶名) PWD(遠程數據庫登錄密碼)
@rmtsrvname:鏈接服務器名稱
@locallogin:本地用戶
@rmtuser:遠程用戶
@rmtpassword:遠程用戶密碼
2.
查詢
示例:SELECT * FROM OPENQUERY(TEST, 'SELECT * FROM tableName')
可簡寫為:SELECT filed1,filed2... FROM TEST.DataBaseName.dbo.tableName where filed=value
3.
插入
示例:INSERT INTO OPENQUERY(TEST, 'SELECT * FROM tableName WHERE 1=0') VALUES(3,6,'ANDY')
可簡寫為: INSERT INTO TEST.DataBaseName.dbo.tableName VALUES(3,6,'ANDY')
4.
更新
示例:UPDATE OPENQUERY(TEST, 'SELECT * FROM tableName') SET role_id = 'ForTest' WHERE id = 3
可簡寫為:UPDATE TEST.DataBaseName.dbo.tableName SET role_id = 'ForTest' WHERE id = 3
5.
刪除
示例:DELETE OPENQUERY(TEST, 'SELECT * FROM tableName') WHERE id = 1
可簡寫為:DELETE TEST.DataBaseName.dbo.tableName WHERE id = 1
6.
存儲過程
示例:EXEC TEST.DataBaseName.dbo.sp_OA_Copy @inputValue,@outputValue output
7.
OPENQUERY 的日期時間條件式
不建議使用:select * from openquery(TEST ,'select * from tableName ') where filed='2009-11-06'
該語句查詢耗時18s;很明顯RETURN的數據相當大,再進行篩選;
建議使用:select * from openquery(TEST ,'select * from tableName ') where filed={ ts ''2009-11-06 00:00:00.000''} ')
該語句查詢耗時3s;在TEST執行完篩選才RETURN的,TABLE的數據量越大效果越明顯;
8.
使用MSDASQL驅動不支持項
1.不支持XML字段插入、更新
2.執行存儲過程時,存儲過程中不能包括臨時表,如果包括則要在執行存儲過程前加上 SET FMTONLY OFF
注:需要對XML字段插入、更新時,我們可以調用遠程存儲過程完成
9.
還可以使用
:opendatasource、openrowset進行跨庫跨數據服務器操作。
網上找到一個圖用于描述操作過程:
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
