2

在我们公司,我们必须支持构建在 Microsoft Access 2010 作为前端和 SQL Server 2008 R2 作为后端的大型遗留系统。后端 SQL 服务器在 Windows Server 2008 R2 上运行。目前,我们的用户在 Windows Server 2008 R2 上处理终端服务器会话。几天前,我们开始使用最新版本的 Windows 10 测试 Windows Server 2019 和笔记本电脑。我们发现在不同环境中执行相同的 Access 数据库时性能差异很大。

例如,创建报告需要 27 秒(新环境)而不是 7 秒(旧环境)。database.accdb 相同,后端相同(仍然是 Windows 2008 R2 Server 和 SQL Server 2008 R2 和 SP2),只是执行环境 (Windows) 发生了变化。

你们中有人知道如何解释吗?

在 Access 2010 中,SQL 服务器表使用 System-DSN 数据源链接。在旧环境中使用 ODBC(驱动程序:SQL Server,版本:6.01.7601.17514)。

在新环境中,我测试了以下驱动程序:

  • 适用于 SQL Server 的 ODBC 驱动程序 11 (2014.120.5543.11)
  • 适用于 SQL Server 的 ODBC 驱动程序 17 (2017.173.01.01)
  • SQL 服务器 (10.00.17763.01)
  • SQL Server Native Client 10.0 (2009.100.4000.00)
  • SQL Server Native Client 11.0 (2011.110.5058.00)

我使用不同的驱动程序创建了一个新的 System-DSN,并更新了 Access 中的链接表。但无论如何,性能仍然很差。我还测试了 Office 2019 附带的最新版本的 Access,但速度又慢。

4

2 回答 2

1

听起来您的终端会话正在受到限制。尽管您有一个 SQL Server 后端,但 Access 仍在对结果集进行相当多的处理,因此您的 Server 2008 和 Server 2019 策略之间的任何资源限制差异都可能会阻塞新服务器中的 Access。

我认为您的答案将在Windows System Resource Manager中找到。该页面说它没有被维护,但点击“推荐版本”链接会导致一个通用的 Server 2019 页面。这是另一篇关于 WSRM 如何限制会话的文章:使用 WSRM 控制 RDS 动态公平共享调度

比较 2008 和 2019 服务器中的 Weighted_Remote_Sessions 策略。要么对默认设置或行为进行了更改,要么在过去修改了 2008 服务器策略以达到当前的性能水平。

于 2019-07-02T15:17:30.270 回答
0

好的,有很多事情要检查。

首先要检查:

启动 ODBC 管理器并检查 SQL 日志跟踪是否打开。我不知道为什么,但我看到 sql 日志记录已打开。

您需要 100% 确定它已关闭。

您必须从命令行或开始菜单启动 ODBC 管理器,因为控制面板中的管理器适用于 x64 位版本,并且您使用的是 Access x32(我假设)。

所以启动这个版本:

c:\Windows\SysWOW64\odbcad32.exe

因此,启动 x32 非常重要。假设您使用的是 FILE dsn。所以检查这两个设置:

在此处输入图像描述

(确保它们未选中)。

下一个?

使用sql server的IP地址进行链接访问。

所以,说的地方:

我的服务器\SQLEXPRESS

利用:

10.50.10.101\SQLEXPRESS

(当然是使用 sql server 的 IP 地址,而不是上面的“示例”IP)。

上面的事情很容易检查。

仍然没有性能修复?

然后禁用新终端服务器上的防火墙(我看到这真的会造成严重破坏)。

并且,如果正在运行,请在新的 TS 服务器上禁用 Windows Defender。

以上提示应该可以解决您的问题。

如果上述方法不起作用,那么接下来将检查 TS 服务器的优先级设置(GUI 优于服务器)。

但是,我打赌上述检查应该会恢复您的表现。

于 2019-07-05T07:29:06.587 回答