专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »数据库 » sqlserver数据库:SQLServer 链接服务器访问远程 Access 数据库 »正文

sqlserver数据库:SQLServer 链接服务器访问远程 Access 数据库

来源: 发布时间:星期四, 2009年2月12日 浏览:120次 评论:0


   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@#

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 OFTWARE\\Microsoft\\Jet\\4.0\\Engines ystemDB

    配置了注册表项后请使用 sp_addlinkedsrvlogin 创建从本地登录到 Access 登录登录映射:

    sp_addlinkedsrvlogin @#mytest@#, false, @#sa@#, @#[AccessUser]@#, @#[AccessPwd]@#

    链接服务器和链接服务器登录映射建立完毕可以在企业管理器里进行查看

3、链接服务器测试

    可以在“SQL查询分析器”里对创建链接服务器进行测试由于 Access 数据库没有目录和架构名称因此基于 Access 链接服务器中表可以在分布式查询中使用 [linked_server]...[table_name] 4部分名称进行引用下例从名为 mytest 链接服务器中检索 articles 表所有行:

    Select * from mytest...articles

    或:Select * from OpenQuery(mytest, @#Select * from .articles@#)

4、用代码访问链接服务器 Access 数据库

    只有实现用代码访问链接服务器 Access 数据库才使得链接服务器发挥了最大灵活性和实用性可以使用 3中测试链接服务器代码建立存储过程供 Asp 代码也可以直接在 Asp 代码中链接服务器以下是我通过测试例子:

  <%

  Dim conn, sSQL, rs

  conn=\"Provider=sqloledb; server=localhost; uid=sa; pwd=SQLSERVER;\"  @#用户 sa 密码为 SQLSERVER可以省略数据库名

  _disibledevent=>  Set rs = Server.CreateObject(\"ADODB.Record\")
  rs.open sSQL, conn, 1, 1

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

  err.number<>0 then
    response.write \"取数据:数据库连接出错或存取数据表!\"
 
    response.write \"OK!\"
  end

  %>
0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: