环境:
操作系统:Windows2008
数据库:SQL2008 R2
其他软件:Office2010要实现链接服务器,链接 Access数据库,发现没有 JET4.0驱动,在网上下载安装了AccessDatabaseEngine.exe,也不行!在我本机上是有这个驱动,不同的是本机用的操作系统是WIN7,而且安装了VS.NET开发环境

解决方案 »

  1.   


    由于Access数据库是一种文件型数据库,所以无法跨服务器进行访问。下面我们来介绍一下如何利用SQLServer的链接服务器,把地理上分散的Access数据库整合起来,使Access数据库具有跨越Web服务器群的能力。此方法还可以使Access数据库与SQLServer数据库,甚至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','Access2000','Microsoft.Jet.OLEDB.4.0','E:我的文档DOS.mdb'
      
      2.创建链接服务器登录映射
      
      同样可以用“企业管理器”或存储过程来完成。存储过程的格式为:
      
      sp_addlinkedsrvlogin'链接服务器',false,'SQLServer登录名','admin',NULL
      
      为访问非保密的Access数据库,试图访问Access数据库的SQLServer登录应该有一个为用户Admin定义的没有密码的登录映射,下例使得本地用户sa可以访问名为mytest的链接服务器:
      
      sp_addlinkedsrvlogin'mytest',false,'sa','admin',NULL
      
      要访问保密的Access数据库,需使用注册表编辑器配置注册表,以便使用Access的正确的工作组信息文件。使用注册表编辑器向该注册表项中添加Access使用的工作组信息文件的完整路径名称:
      
      HKEY_LOCAL_MACHINESOFTWAREMicrosoftJet4.0EnginesSystemDB
      
      配置了注册表项后,请使用sp_addlinkedsrvlogin创建从本地登录到Access登录的登录映射:
      
      sp_addlinkedsrvlogin'mytest',false,'sa','[AccessUser]','[AccessPwd]'
      
      链接服务器和链接服务器登录映射建立完毕,可以在企业管理器里进行查看。
      
      3.链接服务器的测试
      
      可以在“SQL查询分析器”里对创建的链接服务器进行测试。由于Access数据库没有目录和架构名称,因此,基于Access的链接服务器中的表可以在分布式查询中使用[linked_server]...[table_name]的四部分名称进行引用。下例从名为mytest的链接服务器中检索articles表的所有行:
      
      Select*frommytest...articles
      
      或者:Select*fromOpenQuery(mytest,'Select*from.articles')
      
      4.用代码访问链接服务器的Access数据库
      
      只有实现用代码访问链接服务器的Access数据库,才使得链接服务器发挥了最大的灵活性和实用性。可以使用三中的测试链接服务器的代码建立存储过程,供Asp代码调用,也可以直接在Asp代码中调用链接服务器。
      

  2.   

    装一个Microsoft.Jet.OLEDB.4.0的驱动
      

  3.   


    你的环境需要使用ace 12.0 的 驱动
    关键要看你的 AccessDatabaseEngine.exe 版本是否正确临时性访问可以使用 openrowset 之类的
      

  4.   

    现在就是缺少 Microsoft.Jet.OLEDB.4.0 ,AccessDatabaseEngine.exe 2007和2010的我都安装了,就是出不来驱动,索性把Office2010也安装上了,还是不行
      

  5.   


    ace 12.0 的 驱动 如何安装,这个驱动也没有
      

  6.   


    http://www.microsoft.com/en-us/download/details.aspx?id=13255
    我的环境和你的一样,下面的测试通过,access数据库是2010的--建立连接服务器
    EXEC sp_addlinkedserver'my_test_link_server','Access2010','Microsoft.ACE.OLEDB.12.0','E:\test.accdb'
    GO
    --创建链接服务器登录映射
    EXEC sp_addlinkedsrvlogin'my_test_link_server',false,'sa','admin',NULL
    GO
    --查询
    SELECT *  FROM [my_test_link_server]...[tb]
    GO
      

  7.   

    'Microsoft.ACE.OLEDB.12.0' 这个驱动没出来,是不是因为这个原因操作系统是 64位的,Office2010 是32位的
      

  8.   

    这个不太确定,我的都是32位的。
    你说的没出来是什么意思?在“访问接口”里面看不到?那你安装64的office 和64的驱动 然后再看下。
      

  9.   

    就是在SQLServer可视化创建链接服务器时 没有这个驱动,我先安装64位的看看
      

  10.   

    同理参考http://blog.csdn.net/orchidcat/article/details/7480680AccessDatabaseEngine.exe 有64位版本。lz可以查找一下。
      

  11.   

    一句话点醒梦中人,64位的我原来安装不上,是因为已经安装了32位的Office,卸载Office,安装AccessDatabaseEngine.exe 64位的,搞定,使用'Microsoft.ACE.OLEDB.12.0' 驱动