ACC2000: 客户端/服务器性能优化

注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。

点击这里察看该文章的英文版: 208858
本文已归档。它按“原样”提供,并且不再更新。
高级: 需要专家编码、 互操作性,和多用户技能。

本文只适用于 Microsoft Access 数据库 (.mdb)。

概要
本文列出了优化在 Microsoft Access 开放式数据库连接(ODBC) (ODBC) 数据源的性能的提示。

: 本文假定您熟悉客户端/服务器环境和体系结构。
更多信息

访问数据的方法

若要进行服务器与客户端/服务器应用程序的数据,您可以使用一个或多个以下方法:

  • 链接的表和视图
  • 要将 SQL 语句直接发送到服务器的 SQL 传递查询
  • Access 项目中

链接表和视图

处理服务器数据最有效的方法是链接表和视图从您的服务器。Microsoft Access 将为链接表的字段和索引信息存储。当您打开表时,这将提高性能。

: 如果您的域或服务器上的索引进行更改,您必须重新链接在 Access 中的远程表。

运行 SQL 传递查询

在许多的应用程序中可以创建基于远程表的 Access 查询,并还创建 SQL 传递查询。传递查询提供了下列优点:
  • Microsoft Access 不会编译传递查询。它直接向 ODBC 服务器发送查询。这将加快应用程序。
  • 访问完全按输入时,它将直接传递查询发送到服务器。因此,在服务器上进行更多的处理和较少的数据在网络上进行交换。
  • 窗体、 报表,和 Microsoft Access 查询可以基于传递查询使用 ODBC 链接表。
  • 您可以使用代码中有没有等效项的特定于 SQL Server 的功能 (如存储的过程和基于服务器的内部函数)。
  • 更新、 删除和追加直接传递查询是比基于链接的远程表,尤其是在受影响的记录时的操作查询的速度要快得多的操作。
传递查询有以下缺点:
  • SQL 传递查询始终返回不能被更新的快照。Microsoft Access 查询通常返回动态集,以反映其他用户所做的更改,并可对其进行更新。
  • 您需要直接在 SQL 传递查询窗口中使用您的服务器要求的语法键入命令。您不能设计查询设计网格中的传递查询。
  • 如果您所需具有直接传递查询的参数必须在代码中运行该查询,并修改查询的 SQL 属性。 有关其他信息和的一个示例说明如何修改 SQL 属性中,请单击下面文章编号,以查看 Microsoft 知识库中相应的文章:
    232493ACC2000: 如何模拟 SQL 传递查询中的参数

从服务器请求更少数据

请求处理时间的服务器成本中的数据。若要优化性能,请求仅那些记录和所需的字段。

减少如文本框、 组合框、 列表框和子窗体的绑定控件的数量。在打开表单时每个这些控件将一个单独的查询发送到服务器。

如果链接的 ODBC 表的备注或 OLE 对象字段,您可以设置为 字段的 可见性 属性,并添加切换按钮设置为 可见性 属性,以便用户可以选择要查看它。

某些链接的表不会经常更改。例如对于一个表包含名称和 50 状态的缩写将不经常更改。您可以提高窗体加载速度并减少服务器负载存储这些表中的本地副本。您还可以提供一种方法以使用较新的数据,从服务器更新本地副本。

优化查询

在服务器上添加相应的索引) 后优化查询的主要方法确保处理需要在服务器上的位置。您应该避免将服务器特定于 Microsoft Access 的函数或用户定义的函数不支持的功能。有关必须本地处理内容的详细信息,请参阅 Microsoft Jet 数据库引擎 ODBC 连接白皮书 (有关此白皮书的详细信息,请参阅本文后面的"Microsoft Jet 数据库引擎 ODBC 连接白皮书"部分)。

若要发送到服务器的 Select 语句,请参阅,您可以设置该 TraceSQLMode 设置。若要将此设置,请按照下列步骤操作:
  1. 单击 开始 菜单,然后单击 运行
  2. 打开 对话框中键入 注册表编辑器
  3. 展开 HKEY_LOCAL_MACHINE 子树,直到找到 SOFTWARE\Microsoft\Jet\4.0\Engines 子项。
  4. 单击 引擎
  5. 如果 TraceSQLMode 值未出现在右窗格中,单击 编辑 菜单上的 新建,然后单击 DWORD 值
  6. 在名称,在右窗格中,键入新值 TraceSQLMode
  7. 用新值仍处于选中状态的情况下,单击 编辑 菜单上的 修改
  8. 基数,下选择 十进制。在 数值数据 框中键入 1,然后单击 确定
TraceSQLMode 设置有关的详细信息,单击帮助菜单上的 Microsoft Access 帮助、 在 Office 助手或应答向导中,键入"TraceSQLMode",然后单击搜索以查看相关主题。

TryJetAuth 设置

Microsoft Access 将第一次尝试登录到您使用 Microsoft Access 登录 ID 和密码的服务器上是否设置用于控制 TryJetAuth。(默认状态下,Microsoft Access 登录 ID 是"admin",密码为空。 如果此操作的失败 Microsoft Access 将提示您输入登录标识和密码。除非设置了 Microsoft Access 以相同的登录 ID 和密码用作您的 ODBC 服务器,添加行"TryJetAuth = 0"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\ODBC\TryJetAuth 注册表项的注册表。这样可防止 Microsoft Access 试图登录具有错误的 id。若要这样做,请按照下列步骤操作:
  1. 单击 开始,然后单击 运行
  2. 打开 对话框中键入 注册表编辑器
  3. 找到 HKEY_LOCAL_MACHINE 子树。
  4. 展开 HKEY_LOCAL_MACHINE 子树,直到您找到以下子项:
    SOFTWARE\Microsoft\Jet\4.0\ODBC\TryJetAuth
  5. 单击 引擎
  6. 如果 TryJetAuth 值不存在,单击 编辑 菜单上的 新建,然后单击 DWORD 值
  7. 在名称,在右窗格中,键入新值 TryJetAuth
  8. 用新值仍处于选中状态的情况下,单击 编辑 菜单上的 修改
  9. 基数,下选择 十进制。在 数值数据 框中键入 1,然后单击 确定

时间戳

such as Microsoft SQL Server 支持它们的服务器上, 时间戳字段可使更新记录更有效。时间戳字段由服务器维护和更新每个记录被更新的时间。

如果时间戳字段需要仅检查 Microsoft Access 从服务器检索的唯一索引和时间戳字段,若要查看自上次以来,该记录是否已发生更改。否则,Microsoft Access 必须检查记录中的所有字段。如果要链接的表中添加时间戳字段重新链接该表,以告知 Microsoft Access 的新字段。

交易记录

使用事务在 Visual Basic 中为应用程序 (VBA) 更新或插入链接表上的记录时,可以提高性能。 交易记录启用 Jet 数据库引擎将累积多个更新,并将其编写为单个批处理。Microsoft SQL Server,与保持短事务,因为它们可以生成防止其他用户读取受当前交易记录的数据的锁定。虽然您可以嵌套 vba 的交易记录,但是大多数服务器不支持嵌套的事务。Microsoft Access 将只在第一级别的事务发送到服务器。

优化记录集和代码

您可以将存储在本地内存中的动态集类型的 Recordset 对象中设置 CacheSizeCacheStart 属性所包含数据的全部或部分。

高速缓存的大小可以介于 5 和 1200年记录。如果高速缓存的大小超过了可用内存,过多的记录将到临时磁盘文件。应用 FillCache 方法填充与服务器数据缓存。将恢复高速缓存内存,该 CacheSize 属性设置为零。

使用记录集变量实现只需要的功能。如果您只需要将新记录添加到记录集例如对于 OpenRecordset 方法与添加 dbAppendOnly 选项。如果您不需要编辑或更新的能力,使记录集基于 SQL 传递查询。插入和更新记录最快的方法是在代码中使用 SQL 传递查询。

MSysConf 表

您可以创建一个名 MSysConf 为您的服务器控件的背景填充上表 (在 Microsoft Access 记录从服务器中读取的空闲时间汇率)。与此表中,您可以设置一次检索的数据的行数和每次检索延迟的秒数。如果您遇到过多读-锁定服务器上,您可以调整表设置以提高背景填充速度。如果过多的网络通信由背景填充生成,您可以调整这些设置,以降低它。

Microsoft Jet 数据库引擎 ODBC 连接白皮书

一个重要的源的其他信息是"Jet 数据库引擎 ODBC 连接"白皮书。此文档将被写入 Jet 3.0 ; 但是,此信息仍然适用于 Jet 4.0。本文讨论 Microsoft Jet 3.0 数据库引擎和 $ 使用 ODBC 的方式。可以从下面的 Microsoft 网站下载该白皮书:

一个 Access 项目

Access 项目中链接到 Microsoft SQL Server 6.5 或 7.0 使用 OLEDB。所有 Access 数据库中的表是否 SQL Server 到链接的表来增强性能可以转而都创建 Access 项目中。 但是,如果数据库中包含任何访问表此选项不可用。

属性

文章 ID:208858 - 上次审阅时间:12/05/2015 10:57:59 - 修订版本: 3.3

Microsoft Access 2000 标准版

  • kbnosurvey kbarchive kbmt kbdownload kbhowto kbusage KB208858 KbMtzh
反馈