在我们公司中,我们必须支持基于Microsoft Access 2010作为前端和SQL Server 2008 R2作为后端的大型旧系统。后端SQL Server在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中,使用System-DSN数据源链接SQL Server表。在旧环境中,使用ODBC(驱动程序:SQL Server,版本:6.01.7601.17514)。
在新环境中,我测试了以下驱动程序:
我使用不同的驱动程序创建了一个新的System-DSN,并更新了Access中的链接表。但是无论如何,性能还是很差的。我还测试了Office 2019附带的最新版本的Access,但又很慢。
答案 0 :(得分:0)
诸如终端会话之类的声音越来越节制。尽管您拥有SQL Server后端,但Access仍在对结果集进行大量修改,因此Server 2008和Server 2019策略之间的任何资源限制差异都可能使新服务器中的Access阻塞。 >
我认为您的答案将在Windows System Resource Manager中找到。该页面说它没有被维护,但是点击“推荐版本”链接会导致一个通用的Server 2019页面。这是有关WSRM如何限制会话的另一篇文章:Using WSRM to control RDS Dynamic Fair Share Scheduling。
比较2008年和2019年服务器中的Weighted_Remote_Sessions策略。默认设置或行为有所更改,或者过去修改了2008服务器策略以达到当前的性能水平。
答案 1 :(得分:0)
好,要检查的东西很多。
要检查的第一件事:
启动ODBC管理器,并检查SQL日志跟踪是否打开。我不知道为什么,但是我看到了SQL日志记录已打开。
您需要100%确保它已关闭。
您必须从命令行或开始菜单启动ODBC管理器,因为控制面板中的是针对x64位版本的,并且您正在使用Access x32(我认为)。
因此启动此版本:
c:\ Windows \ SysWOW64 \ odbcad32.exe
因此非常重要的是要启动x32。假定您正在使用FILE dsn。因此,请检查以下两个设置:
(确保未选中它们)。
下一步吗?
使用sql服务器的IP地址进行链接访问。
这么说吧:
myServer \ SQLEXPRESS
使用:
10.50.10.101 \ SQLEXPRESS
(当然使用sql server的IP地址,而不是上面的“ example” IP)。
以上内容很容易检查。
仍然没有性能修复?
然后在新的终端服务器上禁用防火墙(我看到这确实造成了破坏)。
并且,如果正在运行,请在新的TS服务器上禁用Windows Defender。
以上提示可以解决您的问题。
如果上述方法不起作用,则下一步是检查TS服务器(服务器上的GUI)的优先级设置。
不过,我敢打赌,以上检查将恢复您的表现。