OLE DB Provider for Jet

更新日期: 2005 年 12 月 5 日

Microsoft OLE DB Provider for Jet 提供了 Microsoft Access 数据库的 OLE DB 接口,并允许 SQL Server 2005 分布式查询对 Access 数据库和 Excel 电子表格进行查询。

创建链接服务器以访问 Access 数据库

  1. 执行 sp_addlinkedserver 以创建链接服务器,指定 Microsoft.Jet.OLEDB.4.0 作为 provider_name,并指定 Access .mdb 数据库文件的完整路径名作为 data_source。.mdb 数据库文件必须驻留在服务器上。data_source 在服务器(而不是客户端)上进行计算 ,且路径必须是服务器上的有效路径。

    例如,若要创建一个名为 Nwind 的链接服务器,对 c:\mydata directory 中名为 Nwind.mdb 的 Access 数据库进行操作,请执行:

    sp_addlinkedserver 'Nwind', 'Access', 'Microsoft.Jet.OLEDB.4.0', 
       'c:\mydata\Nwind.mdb'
    
  2. 若要访问不安全的 Access 数据库,尝试访问 Access 数据库的 SQL Server 登录名应将登录映射定义为用户名 Admin,且不带密码。

    下面的示例使得本地用户 Joe 可以访问名为 Nwind 的链接服务器。

    sp_addlinkedsrvlogin 'Nwind', false, 'Joe', 'Admin', NULL
    

    若要访问安全的 Access 数据库,请使用注册表编辑器配置注册表,以使用 Access 所用的正确的工作组信息文件。使用注册表编辑器将 Access 使用的工作组信息文件的完整路径名添加到下面的注册表项:

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

  3. 配置完注册表项之后,请使用 sp_addlinkedsrvlogin 创建本地登录名到 Access 登录名的登录名映射:

    sp_addlinkedsrvlogin 'Nwind', false, 'Joe',
        'AccessUser', '034fhd99dl'
    
ms175866.security(zh-cn,SQL.90).gif安全说明:
此示例不使用 Windows 身份验证。密码未经加密而进行传输。在保存到磁盘的数据源定义和脚本、备份以及日志文件中可能会看到密码。在此类连接中,切勿使用管理员密码。有关特定于环境的安全指南,请联系您的网络管理员。

Access 数据库没有目录和架构名称。因此,在分布式查询中可以使用由四部分构成的 linked_server**...**table_name 形式的名称来引用基于 Access 的链接服务器中的表。

下面的示例检索名为 Nwind 的链接服务器中的 Employees 表中的所有行。

SELECT * 
FROM Nwind...Employees

创建链接服务器以访问 Excel 电子表格

Microsoft OLE DB Provider for Jet 4.0 可用于访问 Microsoft Excel 电子表格。

  • 若要创建访问 Excel 电子表格的链接服务器,请使用下面示例的格式:

    EXEC sp_addlinkedserver EXCEL,
         'Jet 4.0',
         'Microsoft.Jet.OLEDB.4.0',
         'c:\data\MySheet.xls', 
          NULL,
         'Excel 5.0;'
    
    GO
    
  • 若要访问 Excel 电子表格中的数据,请将单元范围与名称相关联。可以通过将范围名称用作表名来访问命名范围。通过在上面的示例中创建的链接服务器,可以使用下面的查询访问名为 SalesData 的命名范围。

    SELECT *
    FROM EXCEL...SalesData
    GO
    

    将某行插入命名单元范围时,该行将添加到命名单元范围的最后一行之后。因此,如果要在列标题后插入行 rA,请将列标题单元与名称相关联,并将该名称用作为表名。插入行后,单元范围将自动增长。

创建链接服务器以访问格式化文本文件

Microsoft OLE DB Provider for Jet 可用于访问和查询文本文件。

  • 若要创建直接访问文本文件的链接服务器,而不将文件链接为 Access .mdb 文件中的表,请执行 sp_addlinkedserver,如下面的示例所示。

    访问接口为 Microsoft.Jet.OLEDB.4.0,访问接口字符串为 'Text'。数据源是包含文本文件的目录的完整路径名称。Schema.ini 文件必须与文本文件位于同一目录中。Schema.ini 文件说明文本文件的结构。有关如何创建 Schema.ini 文件的详细信息,请参阅 Jet 数据库引擎文档。

    --Create a linked server.
    EXEC sp_addlinkedserver txtsrv, 'Jet 4.0', 
       'Microsoft.Jet.OLEDB.4.0',
       'c:\data\distqry',
       NULL,
       'Text'
    GO
    
    --Set up login mappings.
    EXEC sp_addlinkedsrvlogin txtsrv, FALSE, NULL, Admin, NULL
    GO
    
    --List the tables in the linked server.
    EXEC sp_tables_ex txtsrv
    GO
    
    --Query one of the tables: file1#txt
    --by using a four-part name. 
    SELECT * 
    FROM txtsrv...[file1#txt]
    

请参阅

概念

与 SQL Server 一起测试过的 OLE DB 访问接口
分布式查询

其他资源

sp_addlinkedserver (Transact-SQL)

帮助和信息

获取 SQL Server 2005 帮助

更改历史记录

版本 历史记录

2005 年 12 月 5 日

新增内容:
  • 添加了安全说明。