用于 Jet 的 Microsoft OLE DB 提供程序
用于 Jet 的 Microsoft® OLE DB 提供程序为 Microsoft Access 数据库提供了 OLE DB 接口,并且使 Microsoft SQL Server™ 2000 分布式查询得以查询 Access 数据库。
创建链接服务器以访问 Access 数据库
- 执行 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 97', 'Microsoft.Jet.OLEDB.4.0', 'c:/mydata/Nwind.mdb'
- 为访问非保密的 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
配置了注册表项后,请使用 sp_addlinkedsrvlogin 创建从本地登录到 Access 登录的登录映射:
sp_addlinkedsrvlogin 'Nwind', false, 'Joe', 'AccessUser', 'AccessPwd'
Access 数据库没有目录和架构名称。因此,基于 Access 的链接服务器中的表可以在分布式查询中使用表单 linked_server...table_name 的四部分名称进行引用。
下例从名为 Nwind 的链接服务器中检索 Employees 表的所有行。
SELECT * FROM Nwind...Employees
创建链接服务器以访问 Excel 电子表格
用于 Jet 4.0 的 Microsoft OLE DB 提供程序可用于访问 Microsoft Excel 电子表格。
- 若要创建访问 Excel 电子表格的链接服务器,请使用下例中的格式。
sp_addlinkedserver N'Excel', N'Jet 4.0', N'Microsoft.Jet.OLEDB.4.0', N'c:/data/MySheet.xls', NULL, N'Excel 5.0' GO sp_addlinkedsrvlogin N'Excel', false, sa, N'ADMIN', NULL GO
- 若要访问 Excel 电子表格中的数据,请将单元范围与名称相关联。可以通过将范围名称用作表名来访问命名范围。通过使用在上例中设置的链接服务器,下面的查询可用于访问称为 SalesData 的命名范围。
SELECT * FROM EXCEL...SalesData GO
将某行插入命名单元范围时,该行将添加到命名单元范围的最后一行之后。因此,如果想在列标题后插入行 rA,则将列标题单元与某个名称关联并使用该名称作为表名。当插入行时,单元范围将自动增长。
设置链接服务器以访问格式化文本文件
用于 Jet 的 Microsoft OLE DB 提供程序可用于访问并查询文本文件。
- 若要直接创建访问文本文件的链接服务器而不将文件链接为 Access .mdb 文件中的表,请执行 sp_addlinkedserver,如下例所示。
提供程序是 Microsoft.Jet.OLEDB.4.0,提供程序字符串为"Text"。数据源是包含文本文件的目录的完整路径名称。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 --using a 4-part name. SELECT * FROM txtsrv...[file1#txt]