【问题标题】:Slow performance when using find dialog in Microsoft Access with SQL Server backend在带有 SQL Server 后端的 Microsoft Access 中使用查找对话框时性能下降
【发布时间】:2016-06-29 23:39:51
【问题描述】:

我最近完成了将 Access 数据库迁移到 SQL Server 2014。

在 Access 前端中,我更新了所有表单和大部分报表,以便与 SQL Server 一起使用。一切都运行良好,而且我看到几乎所有方面都有更好的表现,正如人们所期望的那样。

但是,有一个问题我似乎无法在任何地方找到答案。我的用户使用 Access 的“查找和替换”对话框从 Access DB 的大约 2100 条记录中查找特定记录,这几乎是即时的。对于 SQL Server 数据库,这需要 30 多秒才能完成并冻结 Access。

我在 SQL Server 活动监视器中注意到,当您使用 find 时,Batch Requests/sec 会达到峰值,但除此之外,我无法知道 Access 在幕后实际执行了什么来执行查找“查找和替换”对话框或如何解决它。

以前有人遇到过这种情况吗?

【问题讨论】:

  • 您可以使用 SQL Profiler 来监控后台发生的事情。由于“查找和替换”不是本机 sql 函数,我猜它正在做一些非常低效的事情。如果您可以将其使用范围缩小到特定情况,您可能必须使用存储过程和表单编写自己的代码

标签: sql-server ms-access


【解决方案1】:

Find & replace 逐行执行。因此,您拥有与 search 匹配值一样多的单个更新。

我宁愿不使用linked tables,而是通过表单查询Pass-Through。然后用户会看到数据,你可以通过SQL命令批量编写一个功能到find and replace,这将非常快。

【讨论】:

  • 感谢 Slava 提供的信息,可惜他们没有为您提供修改默认查找对话框使用的查询的方法。我的用户将不得不习惯不使用 ctrl + f 来拉出默认的查找对话框并开始使用我构建的自定义对话框!哦,快乐...
  • 这是为 MS Access 编写的。您可以将表格链接到许多不同的来源,它会起作用。如果你想用 SQL Server 让它更快,你必须伸出你的手。
  • 创建传递查询并将表单链接到该查询(而不是 ODBC 链接表)将我的 2100 条记录的小型数据集的查找性能从 5-10 秒提高到瞬时。但是,传递查询是不可更新的,不能在子表单中使用。
  • 你必须尝试一下。您可以通过“UPDATE table Set ABC = 'XYZ' WHERE A = 'B';”作为直通查询
猜你喜欢
  • 2013-08-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多