以下是代碼片段:
-- 執(zhí)行前先刪除已經(jīng)存在數(shù)據(jù) Exec sp_droplinkedsrvlogin [192.168.10.76],Null Exec sp_dropserver 'demodb' -- 創(chuàng)建服務器連接 EXEC sp_addlinkedserver @server='demodb',-- 被訪問的服務器別名 @srvproduct='', @provider='SQLOLEDB', @datasrc='192.168.10.76' -- 要訪問的服務器 EXEC sp_addlinkedsrvlogin 'demodb', -- 被訪問的服務器別名 'false', NULL, 'Test', -- 帳號 'RemoteDB' -- 密碼
如上我們首先清除已經(jīng)可能創(chuàng)建服務器數(shù)據(jù)記錄. 然后創(chuàng)建服務器連接.sp_addlinkedSrvlogin系統(tǒng)存儲過程用來創(chuàng)建鏈接服務器上遠程登錄之間的映射 . 即我們可以詳細設置本地與遠程服務器詳細的映射信息. 例如設置我們特定用戶訪問的用戶名和密碼.
查詢數(shù)據(jù)
-- 查詢指定用戶Test數(shù)據(jù) select * from [demodb].CustomerDB.dbo.Users -- [如上測試成功]
查詢結(jié)果
指定用戶Test對CustomerDB訪問數(shù)據(jù)方式測試成功.
當測試完成后我們不需要這個連接服務器是即可利用SP_DroplinkServer刪除掉. 對應參數(shù)為創(chuàng)建時Name唯一標識. 通過Sp_helpserver來查看連接服務器詳細信息.
注意如上創(chuàng)建連接服務器時設置srvproduct參數(shù)即OLED數(shù)據(jù)源名稱時我們采用了SQlServer方式.
下面說明這種方式特點.:
這種方式是最為簡單直接的一種建立鏈接服務器方式. 但是存在前提的. 測試發(fā)現(xiàn):
在所有數(shù)據(jù)庫的遠程連接 dbo 的方式必須建立在SA 密碼相同的基礎上 ,否則容易產(chǎn)生無法連接的情況 Sa用戶登錄失敗. 你也就明白這個SQlServer參數(shù)其實就是在本地數(shù)據(jù)拷貝服務器角色SysAdmin下用戶SA.來對服務器進行登錄. 如果你的本地Sa密碼與遠程服務器上密碼不一致 則無法正常連接.
經(jīng)過測試還發(fā)現(xiàn)一種情況:
利用Windows7訪問XP(Sp2)系統(tǒng)時始終提示無法解析或拒絕連接SQL Server2005.這個問題我整了好久后來才到官方鏈接參數(shù)中發(fā)現(xiàn).:如果你的XP系統(tǒng)沒有打上SP4的補丁包 這個問題會始終出現(xiàn). 需要特別注意.
<2.2>直接指定數(shù)據(jù)源分布式查詢
其實相對第一種方式, 直接指定方式在SQL Server架構(gòu)中 其實跳過本地與遠程服務器建立映射關系的這一步. 通過鏈接關系建立 其實就是建立一種內(nèi)部映射關系. 如果沒有映射關系則 大部分設置需要手動控制.
直接指定數(shù)據(jù)源方式 需要開啟分布式查詢的基本權限 來進行查詢:
出處:IT專家網(wǎng)
責任編輯:bluehearts
上一頁 詳解SQL Server分布式查詢 [3] 下一頁 詳解SQL Server分布式查詢 [5]
◎進入論壇網(wǎng)絡編程版塊參加討論
|