XL:如何使用文件 DSN 和无 DSN 连接

文章翻译 文章翻译
文章编号: 165866 - 查看本文应用于的产品
展开全部 | 关闭全部

本文内容

概要

当您使用一个未使用数据源名称的连接字符串(无 DSN 连接字符串)在 Microsoft Excel 中连接到一个外部数据源时,连接到外部数据源所需的信息存储在工作簿文件结构中而不是数据源名称中。Microsoft Query 97 及更高版本和 Microsoft Excel 97 及更高版本使用此种无 DSN 的连接;而 Microsoft Query 和 Microsoft Excel 的早期版本不使用此种连接。

更多信息

为什么无 DSN 连接非常重要?

在 Microsoft Excel 的早期版本中,为了检索外部数据,您需要创建一个数据源。数据源名称和连接到此数据时所需的其他信息存储在工作表中的隐藏名称中。因此,当一个包含外部数据引用的工作簿在多个用户间共享时,连接字符串中引用的数据源名称必须存在于每个用户的计算机上。否则,当您更新或编辑外部数据时可能会收到一个错误消息。

在 Microsoft Excel 97 及更高版本中,一旦数据返回到工作表,则从初始数据源(不是数据源名称)中产生的结构化查询语言 (SQL) 语句和驱动程序信息将与工作表一起存储在工作簿的文件结构中。这些无 DSN 连接解决了在几台计算机上维护数据源的问题。所有必需的信息都存储在工作簿本身中。不过,必须在每台计算机上都安装一个合适的“开放式数据库连接”(ODBC) 驱动程序副本,这样查询才能够工作。

无 DSN 连接字符串的形式

下面是一个无 DSN 连接字符串的示例:
DBQ=C:\TEST\QUERY FILES;DefaultDir=C:\TEST\QUERY FILES; _
Deleted=1;Driver={Microsoft dBase Driver (*.dbf)}; _
DriverId=277;FIL=dBase IV;PageTimeout=600;Statistics=0
				
要注意在此段文本中没有对 DSN 关键字的引用。

有关数据源文件的更多信息

Microsoft Query 2.0 版在注册表中存储数据源信息。Microsoft Query 97 及更高版本不使用注册表存储数据源信息,当您创建一个新数据源时,连接信息存储在一个使用 .dsn 扩展名的文本文件中。此文件也称为文件 DSN。

每一个文件 DSN 包含一个 ODBC 部分和一个可选的 Microsoft Office 部分,这些部分可能包含给定数据源的默认表、密码和用户 ID。以下是保存文件 DSN 时使用的默认文件夹:
C:\Program Files\Common Files\ODBC\Data Sources
				
以下是保存查询时使用的默认文件夹:
C:\Program Files\Microsoft Office\Queries
				
您可以指定在文件 DSN 的搜索中包括的文件夹,其中包括网络位置。

以下是一个文件 DSN 示例,它使用 Microsoft Access 7.0 数据库驱动程序(Microsoft Office 97 中包括的一个 ODBC 驱动程序):
   [ODBC]
   DSN=MS Access 7.0 Database
				
如果您创建一个引用网络文件的文件 DSN,并且将网络驱动器映射为一个特定的驱动器号,则在文件 DSN 中将会指定该驱动器号。当您希望与网络上的多个用户共享此文件 DSN 并希望在所有用户都可以访问的服务器上维护此文件 DSN 时,此行为可能会导致问题。为解决此问题,可以使用下面两种方法之一:

方法 1

只要有可能,尽量使用通用命名约定 (UNC) 引用,而不是使用映射的驱动器。

方法 2

用记事本打开文件 DSN 并修改对驱动器号的引用,使之使用 UNC 引用。请参考以下示例:
   [ODBC]
   DRIVER=Microsoft Excel Driver (*.xls)
   UID=admin
   UserCommitSync=Yes
   Threads=3
   SafeTransactions=0
   ReadOnly=1
   PageTimeout=5
   MaxScanRows=8
   MaxBufferSize=512
   ImplicitCommitSync=Yes
   FIL=excel 5.0
   DriverId=790
   DefaultDir=<drive letter>:\ 
   DBQ=<drive letter>:\<source filename>
				
在此示例中,<drive letter> 是映射的驱动器而 <source filename> 是源数据文件。

将最后两行更改如下
   DefaultDir=\\<server name>\<share>
   DBQ=\\<server name>\<share>\<source filename>
				
其中,<server name> 为网络服务器,<share> 是网络服务器上的共享区,而 <source filename> 为源数据文件。

在修改此文件之后,所有的用户都可以成功地使用此文件 DSN。

有关文件 DSN 中驱动程序方面的更多信息,请参见特定于您正在使用的 ODBC 驱动程序的“帮助”文件。

您也可以使用 32 位 ODBC“控制面板”图标创建文件 DSN。为此,请按照下列步骤操作:

  1. 开始菜单上,指向设置,然后单击控制面板。接着双击 32bit ODBC
  2. 单击文件 DSN 选项卡。
  3. 单击添加
  4. 创建新数据源对话框中,单击您希望为其创建数据源的驱动程序。单击下一步
  5. 为新创建的数据源输入完整的路径和文件名(例如,C:\Program Files\Common Files\ODBC\Data Sources\Test.dsn)。然后单击下一步
  6. 单击完成

    针对您在第 4 步中选定的 ODBC 驱动程序的“ODBC 安装”对话框随即出现。
  7. 在此对话框中,输入适当的信息。

    注意:如果您不希望在文件 DSN 中包含特定的驱动器号,请在选择数据库对话框中的数据库名称框中输入 UNC 路径。
  8. 单击确定
  9. 单击确定以关闭 ODBC 数据源管理器对话框。
此文件 DSN 可供 Microsoft Query 使用。

注册表中的 Microsoft Query 信息

如果注册表项中的查询路径值丢失,或者路径值指定了一个未包含此文件的文件夹,则 Microsoft Query 会自动注册其本身。您可以通过启动 Microsoft Query 重置其在注册表中的位置。在 Microsoft Windows 95 及更高版本中,您可以在以下注册表项中找到 Microsoft Query:
HKEY_LOCAL_MACHINE\Software\Microsoft\Shared Tools\MSQuery
				
当您安装 Microsoft Office 97 或更高版本时,安装程序将创建一个指向 DSN 文件默认位置的注册表项。此位置存储在以下注册表项中:
HKEY_LOCAL_MACHINE\Software\ODBC\odbc.ini\ODBC File DSN\DefaultDSNDir
				
您可以通过添加以下注册表项指定一个备选的 DSN 文件位置。
HKEY_CURRENT_USER\Software\ODBC\odbc.ini\ODBC File DSN\DefaultDSNDir
				
在您创建此项之后,HKEY_LOCAL_MACHINE 下的项将被忽略。

参考

有关检索数据的更多信息,请单击“Office 助手”,键入数据源,单击搜索,然后单击以查看“Ways to retrieve data from an external database”(从外部数据库检索数据的方法)。

注意:如果“助手”已隐藏起来,请在标准工具栏上单击 Office 助手按钮。如果您的计算机上未安装 Microsoft Help 文件,则请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
120802 Office:How to Add/Remove a Single Office Program or Component

有关其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
159557 XL97:Using System, User, and File Data Sources

属性

文章编号: 165866 - 最后修改: 2011年9月19日 - 修订: 3.0
这篇文章中的信息适用于:
  • Microsoft Excel 2000 标准版
  • Microsoft Excel 97 标准版
关键字:?
kbhowto kbprogramming kbualink97 KB165866
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com