国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

應用 SQLServer 鏈接服務器訪問遠程 Access 數據庫

2024-07-21 02:09:28
字體:
來源:轉載
供稿:網友

    web 開發中,經常要用到 access 數據庫。但是由于 access 是一種文件型數據庫,所以無法跨服務器進行訪問。經過筆者的探索,發現可以利用 sql server 的鏈接服務器,把地理上分散的 access 數據庫整合起來,使 access 數據庫具有跨越 web 服務器群的能力。這樣做,還可以使 access 數據庫與 sql server,甚至 oracle 等網絡數據庫連接起來,實現異構數據庫的互連,從而執行分布式的查詢、更新、命令和事務。

一、創建鏈接服務器,連接本地 access 數據庫

    創建鏈接服務器可以用“企業管理器”,也可以執行系統存儲過程 sp_addlinkedserver 來完成。用系統存儲過程相對快捷一些,格式為:
    sp_addlinkedserver '鏈接服務器名', '產品名', 'microsoft.jet.oledb.4.0', 'access數據庫路徑及文件名'

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

    例如,本例創建一個名為 mytest 的鏈接服務器,對 e:/我的文檔/ 文件夾下名為 dos.mdb 的 access 數據庫進行操作,則在“sql查詢分析器”中執行:

    sp_addlinkedserver 'mytest', 'access 2000', 'microsoft.jet.oledb.4.0', 'e:/我的文檔/dos.mdb'

二、創建鏈接服務器登錄映射

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

    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 oftware/microsoft/jet/4.0/engines ystemdb

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

    sp_addlinkedsrvlogin 'mytest', false, 'sa', '[accessuser]', '[accesspwd]'

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

三、鏈接服務器的測試

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

    select * from mytest...articles

    或:select * from openquery(mytest, 'select * from .articles')

四、用代碼訪問鏈接服務器的 access 數據庫

    只有實現用代碼訪問鏈接服務器的 access 數據庫,才使得鏈接服務器發揮了最大的靈活性和實用性??梢允褂萌械臏y試鏈接服務器的代碼建立存儲過程,供 asp 代碼調用,也可以直接在 asp 代碼中調用鏈接服務器,以下是我通過測試的例子:

  <%

  dim conn, ssql, rs

  conn="provider=sqloledb; server=localhost; uid=sa; pwd=sqlserver;"  '用戶 sa 的密碼為 sqlserver??梢允÷詳祿烀?br>
  on error resume next

  ssql = "select * from mytest...articles"
  set rs = server.createobject("adodb.recordset")
  rs.open ssql, conn, 1, 1

  rs.movefirst
  response.write rs(0) & "<br>"

  if err.number<>0 then
    response.write "取數據錯誤:數據庫連接出錯,或存取數據表錯誤!"
  else
    response.write "ok!"
  end if

  %>

                  張慶 2002.10.1 3:58
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 遵化市| 福泉市| 兖州市| 周至县| 中牟县| 宁安市| 昭觉县| 江山市| 宁海县| 双流县| 龙川县| 兴城市| 嘉峪关市| 闽清县| 连州市| 霍城县| 宜良县| 肥乡县| 水富县| 南乐县| 镇沅| 陇川县| 金昌市| 招远市| 阿坝县| 安远县| 从江县| 内黄县| 监利县| 峨眉山市| 大竹县| 安丘市| 义马市| 深水埗区| 方山县| 高陵县| 美姑县| 锦屏县| 安化县| 拉萨市| 红安县|