程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> 其他數據庫知識 >> 更多數據庫知識 >> 巧用SQL鏈接服務器訪問遠程Access數據庫

巧用SQL鏈接服務器訪問遠程Access數據庫

編輯:更多數據庫知識

 

由於Access數據庫是一種文件型數據庫,所以無法跨服務器進行訪問。下面我們來介紹一下如何利用SQL Server 的鏈接服務器,把地理上分散的Access 數據庫整合起來,使 Access 數據庫具有跨越 Web 服務器群的能力。此方法還可以使 Access 數據庫與SQL Server數據庫,甚至 Oracle 等網絡數據庫連接起來,實現異構數據庫的互連,最終執行分布式的查詢、更新、命令和事務。

1.創建鏈接服務器,連接本地 Access 數據庫

創建鏈接服務器可以用“企業管理器”,也可以執行系統存儲過程 sp_addlinkedserver 來完成。用系統存儲過程相對快捷一些,格式為:

sp_addlinkedserver '鏈接服務器名', '產品名', 'Microsoft.Jet.OLEDB.4.0', 'Access數據庫路徑及文件名'。  

指定 Microsoft.Jet.OLEDB.4.0 作為 provider_name,指定 Access 數據庫文件的完整路徑名作為 data_source。.mdb 數據庫文件必須駐留在本地服務器上,路徑必須是服務器上的有效路徑。  

例如,本例創建一個名為Anna的鏈接服務器,對 E:\我的文檔\ 文件夾下名為 DOS.mdb 的 Access 數據庫進行操作,則在“SQL查詢分析器”中執行: 

 

sp_addlinkedserver 'Anna', 'Access 2000', 'Microsoft.Jet.OLEDB.4.0', 'E:\我的文檔\DOS.mdb'  

 

 

2.創建鏈接服務器登錄映射

同樣可以用“企業管理器”或存儲過程來完成。存儲過程的格式為:  

sp_addlinkedsrvlogin '鏈接服務器', false, 'SQLServer登錄名', 'admin', NULL  

為訪問非保密的 Access 數據庫,試圖訪問 Access 數據庫的 SQL Server 登錄應該有一個為用戶 Admin 定義的沒有密碼的登錄映射,下例使得本地用戶 sa 可以訪問名為 mytest 的鏈接服務器:  

sp_addlinkedsrvlogin 'mytest', false, 'sa', 'admin', NULL  

要訪問保密的 Access 數據庫,需使用注冊表編輯器配置注冊表,以便使用 Access 的正確的工作組信息文件。使用注冊表編輯器向該注冊表項中添加 Access 使用的工作組信息文件的完整路徑名稱:

 

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\SystemDB 

配置了注冊表項後,請使用 sp_addlinkedsrvlogin 創建從本地登錄到 Access 登錄的登錄映射: 

sp_addlinkedsrvlogin 'mytest', false, 'sa', '[AccessUser]', '[AccessPwd]'  

鏈接服務器和鏈接服務器登錄映射建立完畢,可以在企業管理器裡進行查看。  

3.鏈接服務器的測試

可以在“SQL查詢分析器”裡對創建的鏈接服務器進行測試。由於 Access 數據庫沒有目錄和架構名稱,因此,基於 Access 的鏈接服務器中的表可以在分布式查詢中使用 [linked_server]...[table_name] 的四部分名稱進行引用。下例從名為 mytest 的鏈接服務器中檢索 articles 表的所有行:  

 

 

Select * from mytest...articles  
或者:Select * from OpenQuery(mytest, 'Select * from .articles') 

 

4.用代碼訪問鏈接服務器的 Access 數據庫

只有實現用代碼訪問鏈接服務器的 Access 數據庫,才使得鏈接服務器發揮了最大的靈活性和實用性。可以使用三中的測試鏈接服務器的代碼建立存儲過程,供 Asp 代碼調用,也可以直接在 Asp 代碼中調用鏈接服務器。

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