如何在基于 Windows 2000 和基于 Windows XP 的客户端上优化 Office Access 和 Jet 数据库引擎的网络性能

文章翻译 文章翻译
文章编号: 889588 - 查看本文应用于的产品
重要说明:本文包含有关修改注册表的信息。修改注册表之前,一定要先进行备份,并且一定要知道在发生问题时如何还原注册表。有关如何备份、还原和编辑注册表的信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
256986 Microsoft Windows 注册表说明
展开全部 | 关闭全部

本文内容

概要

在基于 Microsoft Windows 2000 或基于 Microsoft Windows XP 的计算机上运行 Microsoft Office Access 等基于 Microsoft Jet 数据库引擎的程序时,这类程序的运行速度和响应速度可能比您预期的要慢。本文包含有关如何为基于 Windows 2000 和基于 Windows XP 的计算机优化网络性能的信息。这样做可以提高 Office Access 和基于 Jet 数据库引擎的程序的响应速度。

简介

将计算机从基于 Microsoft Windows NT 4.0 的操作系统升级到基于 Windows 2000 的操作系统或基于 Windows XP Professional 的操作系统后,Office Access 或基于 Jet 数据库引擎的应用程序的性能可能会下降。例如,您可能遇到下列症状:
  • 打开 .mdb 文件所需的时间比预期时间长。
  • 运行 Access 查询所需的时间比预期时间长。
  • 在 Access 中打开基于链接表的窗体所需的时间比预期时间长。
  • Access 操作(如“插入”)所需的时间比预期时间长。
  • 访问网络资源的过程所需的时间比预期时间长。

更多信息

Access 和基于 Jet 数据库引擎的程序的网络性能取决于下列条件:
  • 存储 Access 后端数据库的文件服务器的文件系统设置。
  • 客户端的缓存和优化方法。
  • Access 或基于 Jet 数据库引擎的程序例程和方法。

文件服务器优化

下列方法说明如何在存储 Access 或基于 Jet 数据库引擎的数据库的文件服务器上优化性能。

使用 8.3 文件名约定

如果数据库文件名长度超过八个字符,或者数据库所在的文件夹的名称长度超过八个字符,则对于每个追加查询,Access 会通过网络调用 GetShortPathNameW 函数。

对于长度超过 8.3 文件命名约定限制指定的文件名和文件夹名称,就会出现此行为。长文件名和文件夹名称会增加完成查询所需的时间。如果数据库文件的名称或数据库所在文件夹的名称长度超过八个字符,请重命名该文件名或文件夹名称。文件名和文件夹名称不得超过八个字符,且文件扩展名不得超过三个字符。以下是包含符合 8.3 约定的短文件名和文件夹名称的数据库路径示例:
\Folder_1\Folder_2\AccessDb.mdb
以下是使用长文件名和文件夹名称的数据库路径示例:
\FolderForFirstDatabase\FolderForSecondDatabase\ThisIsA_BigDatabase.mdb
有关 Windows 中长文件名的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
226403 进行复制时短 (8.3) 文件名可能更改
另外,如果您正在使用拆分数据库,则可使用 8.3 约定等价值替换前端数据库链接的文件名和文件夹名称。例如,假设您有以下长文件名和文件夹名称数据库路径:
\FolderForFirstDatabase\FolderForSecondDatabase\ThisIsA_BigDatabase.mdb
可以将前端数据库中的链接重命名为以下等价的短文件名和文件夹名称:
\Folder~1\Folder~2\Thisis~1.mdb
以下示例阐释如何使用短文件名约定链接到具有长数据库路径的数据库:
Function mcrLink()

DoCmd.TransferDatabase acLink, "Microsoft Access", "\\ServerName\sharename\Folder~1\Folder~2\Thisis~1.mdb", acTable, "tblName1", "tblName1", False

End Function


有关如何使用 8.3 约定等价值替换前端数据库链接的文件名和文件夹名称的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
891176 从 Windows NT 4.0 升级到 Windows 2000 或 Windows XP 后,基于 Access 或基于 Jet 数据库的程序的性能下降
Microsoft 提供的编程示例只用于说明目的,不附带任何明示或默示的保证。这包括但不限于对适销性或特定用途适用性的默示保证。本文假定您熟悉所演示的编程语言和用于创建和调试过程的工具。Microsoft 的支持工程师可以帮助解释某个特定过程的功能,但是他们不会修改这些示例以提供额外的功能或构建过程以满足您的特殊需求。

关闭共享冲突通知延迟

您可以关闭共享冲突通知延迟以提高文件服务器的性能。为此,请在存储 Access 或基于 Jet 数据库引擎的程序数据库的文件服务器上按照下列步骤操作。

警告:如果使用注册表编辑器或其他方法错误地修改了注册表,则可能导致严重问题。这些问题可能需要重新安装操作系统才能解决。Microsoft 不能保证您可以解决这些问题。修改注册表需要您自担风险。
  1. 依次单击“开始”、“运行”,键入 regedit,然后单击“确定”。
  2. 找到以下注册表子项:
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters
  3. 右键单击“参数”,指向“新建”,单击“DWORD 值”,键入 SharingViolationDelay,然后按 Enter。

    注意:在创建 SharingViolationDelay 子项条目时,分配的默认值为 0x0。这正是需要的值。

    如果 SharingViolationDelay 子项条目已存在,请右键单击“SharingViolationDelay”条目,单击“修改”,键入 0,然后单击“确定”。
  4. 右键单击“参数”,指向“新建”,单击“DWORD 值”,键入 SharingViolationRetries,然后按 Enter。

    注意:在创建 SharingViolationRetries 子项条目时,分配的默认值为 0x0。这正是需要的值。

    如果 SharingViolationRetries 子项条目已存在,请右键单击“SharingViolationRetries”条目,单击“修改”,键入 0,然后单击“确定”。
  5. 退出注册表编辑器。
有关共享冲突通知延迟的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
150384 访问在另一计算机上打开的共享文件时出现延迟

将后端数据库文件移到 NTFS 文件系统卷上

如果 Access 或基于 Jet 数据库引擎的程序数据库位于基于文件分配表 (FAT) 的卷上,可通过将后端数据库文件移到 NTFS 卷上来提高性能。 有关 NTFS 的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
100108 FAT、HPFS 和 NTFS 文件系统概述
有关如何移动 Access 或 Jet 数据库引擎数据库文件的更多信息,请在 Access 的“帮助”中搜索“复制或移动 Access 文件”。

禁用自动生成短文件名

在 NTFS 文件系统上禁用自动生成短文件名。为此,请在存储 Access 或基于 Jet 数据库引擎的程序数据库的文件服务器上按照下列步骤操作。 警告:如果使用注册表编辑器或其他方法错误地修改了注册表,则可能导致严重问题。这些问题可能需要重新安装操作系统才能解决。Microsoft 不能保证您可以解决这些问题。修改注册表需要您自担风险。
  1. 依次单击“开始”、“运行”,键入 regedit,然后单击“确定”。
  2. 找到以下注册表子项:
    HKEY_LOCAL_MACHINE \SYSTEM\CurrentControlSet\Control\FileSystem
  3. 右键单击“NtfsDisable8dot3NameCreation”,单击“修改”,键入 1,然后单击“确定”。
  4. 退出注册表编辑器,然后重新启动计算机。
注意:进行此更改后,使用短名称格式的文件仍可用于 32 位程序。不过,进行此更改后创建的具有长文件名的文件不能用于 16 位程序。

有关在 NTFS 上自动生成短文件名的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
121007 如何在 NTFS 分区上禁止创建 8.3 格式的名称
有关更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
210638 如何禁用自动生成短文件名
如果 Access 或 Jet 数据库引擎数据库文件位于 Windows Server 2003 文件服务器上,您可以关闭文件系统别名。别名是 Windows Server 2003 包含的一项功能。使用该功能,可以使多个长文件名或多个短文件名引用同一文件。禁用文件系统别名会增加基于 Windows Server 2003 的计算机上可用的服务器服务缓存,从而可以提高性能。

重要说明:如果您的基于 Windows Server 2003 的计算机使用文件系统别名,例如装入点或重新分析点,则不建议您执行此过程。

要关闭文件服务器别名,请在存储 Access 或 Jet 数据库引擎数据库的 Windows Server 2003 文件服务器上按照下列步骤操作。

警告:如果使用注册表编辑器或其他方法错误地修改了注册表,则可能导致严重问题。这些问题可能需要重新安装操作系统才能解决。Microsoft 不能保证您可以解决这些问题。修改注册表需要您自担风险。
  1. 依次单击“开始”、“运行”,键入 regedit,然后单击“确定”。
  2. 找到以下注册表子项:
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters
  3. 右键单击“参数”,指向“新建”,单击“DWORD 值”,键入 NoAliasingOnFileSystem,然后按 Enter。
  4. 右键单击“NoAliasingOnFileSystem”,单击“修改”,键入 1,然后单击“确定”。
  5. 退出注册表编辑器,然后重新启动计算机。

客户端优化

下列方法说明如何在要访问 Access 或基于 Jet 数据库引擎的数据库的客户端上优化性能。

启用高级文件名缓存

在默认情况下,基于 Windows 2000 和基于 Windows XP 的操作系统仅缓存短文件名和短文件夹名称。也就是符合 8.3 约定的文件名和文件夹名称。您可以在基于 Windows 2000 或基于 Windows XP 的计算机上启用高级缓存,以便它还能缓存长文件名和长文件夹名称。这可以提高通过网络访问文件的性能。

有关如何在 Windows XP Service Pack 1 和早期版本中启用高级缓存的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
834350 在 Windows XP 中访问网络资源的速度比早期版本的 Windows 慢
有关如何在 Windows 2000 中启用高级缓存的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
843418 在 Windows 2000 中访问网络资源或使用 Microsoft Access 时可能遇到性能降低问题
注意:Windows XP Service Pack 2 和 Windows Server 2003 已包含一种类型的高级缓存。但是,必须将下面注册表子项中的 InfoCacheLevel 注册表项设置为十六进制值 0x10 才能优化性能:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MRxSmb\Parameters

在基于 Windows XP 的计算机上优化追加查询

基于 Windows XP 的计算机为发生的每个追加事务刷新缓存并将整个数据库写入文件服务器。通过在基于 Windows XP 的计算机上应用修补程序和更改 Windows 注册表条目 DisableFlushOnCleanup,您可以优化追加查询。

有关如何在基于 Windows XP 的计算机上优化追加查询的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
825433 从基于 Windows XP 的客户端将数据追加到基于共享文件的数据库时性能下降

优化 Access 或基于 Jet 数据库引擎的数据库例程和方法

下列建议可提高 Access 或基于 Jet 数据库引擎的程序使用的例程和方法的性能。
  • 使用拆分数据库配置。拆分数据库配置也称为前端和后端数据库配置。 有关如何配置拆分数据库的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
    162522 将 Access 应用程序重新发布为拆分数据库应用程序时出现问题
  • 在客户端计算机和文件服务器计算机上安装可用于您的 Windows 操作系统的最新 Service Pack。
  • 在客户端计算机上安装 Jet 4.0 Service Pack 8 或更高版本。 有关如何获取 Jet 数据库引擎的最新 Service Pack 的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
    239114 如何获取 Microsoft Jet 4.0 数据库引擎的最新 Service Pack
  • 配置所有数据库前端计算机以维护到后端数据库文件的开放连接。 为此,请在后端数据库文件中创建包含一个文本字段和一条记录的表。 例如,创建具有下列配置的表:
    表名:tblConnect
    字段名称:Field1
    数据类型:Text
    第一个记录:“连接”

    将该表链接到您的前端数据库,然后创建一个基于该表的窗体。通过使用包含启动例程的隐藏窗体打开该数据库。启动例程可包含在宏或启动窗体中,如下例中所示:
    DoCmd.OpenForm " tblConnect",acNormal ,,,,acHidden
    另外,可打开基于该表的记录集。该记录集变量必须在模块的全局声明部分中声明。另外,退出前端数据库时必须关闭它。
  • 如果多个用户连接到该数据库以获得数据项,则使用窗体代替表。

优化数据库性能的最佳做法

在优化 Access 或基于 Jet 数据库引擎的程序性能时,建议执行下列最佳做法:
  • 优化包含循环等耗资源操作的 Access 模块中的数据库程序代码。为此,请将循环代码包含在 BeginTrans 和 CommitTrans 语句之间,如下例中所示:
    BeginTrans
    		  循环代码
    CommitTrans
    这样,Jet 数据库引擎可累积多次更新并作为单一批次写入它们。 有关如何优化 Access 模块中代码的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
    208858 ACC2000:优化客户端/服务器性能
  • 在默认情况下,Windows 客户端上启用机会锁定。请确保客户端计算机上未禁用机会锁定。 有关如何在 Windows 中配置机会锁定的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
    296264 在 Windows 中配置机会锁定
    有关机会锁定和性能的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
    303528 如何保持 Jet 4.0 数据库处于最佳工作状态
  • 通过使用映射驱动器(而不是 UNC 路径)连接到存储 Access 或基于 Jet 数据库引擎的数据库的文件服务器。
要优化数据库性能,请考虑将 Access 或 Jet 数据库引擎的程序迁移到 Microsoft SQL Server。对于处理多个连接的活动数据库,客户端/服务器模式比文件服务器模式更适合。使用 SQL Server 可显著提高性能和增强稳定性。

参考

有关 Access、Jet 数据库引擎和网络性能的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
275085 BUG:Access 2002 和 Office Access 2003 中链接表的性能下降
261000 BUG:Access 2000 中链接表的性能下降
209126 有关 Access 数据库查询性能的信息
288631 整理和压缩数据库以提高性能
209126 有关 Access 数据库查询性能的信息
290181 在 Microsoft Access 中启用名称自动更正时用户打开对象的速度慢
240434 如何使用 Jet 4.0 提高应用程序性能
289533 到哪里查找有关在 Microsoft Access 中设计数据库的信息
870753 Jet 4.0 数据库引擎 837001 后的修补程序包(2004 年 7 月 21 日版)的说明
303528 如何保持 Jet 4.0 数据库处于最佳工作状态
208858 ACC2000:优化客户端/服务器性能
239114 如何获取 Microsoft Jet 4.0 数据库引擎的最新 Service Pack
891176 从 Windows NT 4.0 升级到 Windows 2000 或 Windows XP 后,基于 Access 或基于 Jet 数据库的程序的性能下降

属性

文章编号: 889588 - 最后修改: 2007年12月1日 - 修订: 5.3
这篇文章中的信息适用于:
  • Microsoft Windows XP Professional Edition
  • Microsoft Windows XP Professional x64 Edition
  • Microsoft Windows XP Media Center Edition
  • Microsoft Windows XP Tablet PC Edition
  • Microsoft Windows 2000 Professional Edition
  • Microsoft Windows 2000 Server
  • Microsoft Windows Server 2003 Standard Edition
  • Microsoft Office Access 2003
  • Microsoft Access 2002 标准版
  • Microsoft Access 2000 标准版
  • Microsoft Access 97 标准版
  • Microsoft Windows XP Professional 64-Bit Edition (Itanium)
关键字:?
kbnetwork kbdatabase kbperformance kbopenfile kbhowto KB889588
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