我正在将一个MS Access 2003应用程序升级到SQL Server后端。在我的开发机器上,SQL Server是本地的,因此性能相当不错。我想使用远程SQL Server来测试性能,这样我就可以考虑重设计应用程序时网络延迟的影响。我期望一些现在看起来很快的查询一旦部署到生产环境中就会运行得相当慢。
如何减慢(或模拟远程)SQL Server的速度,而不使用虚拟机或将SQL移到另一台计算机上?是否有某种代理或Windows实用程序可以为我完成这个操作?
我正在将一个MS Access 2003应用程序升级到SQL Server后端。在我的开发机器上,SQL Server是本地的,因此性能相当不错。我想使用远程SQL Server来测试性能,这样我就可以考虑重设计应用程序时网络延迟的影响。我期望一些现在看起来很快的查询一旦部署到生产环境中就会运行得相当慢。
如何减慢(或模拟远程)SQL Server的速度,而不使用虚拟机或将SQL移到另一台计算机上?是否有某种代理或Windows实用程序可以为我完成这个操作?
你是在将本地PC上的Access客户端与驻留在文件服务器上的Access MDB进行比较,还是将其他类型的客户端用于从同一网络上另一个服务器中的SQL Server消耗数据?你要继续使用Access作为客户端吗?你的查询是否为传递查询?
WHERE
子句就会在SQL Server上运行。你的第二个段落也是错误的:对于从Access对SQL Server进行的查询,只有在JOIN
和WHERE
子句可以在SQL Server上运行而没有Access特定的关键字(如'IIF')的情况下,才会消耗较少的带宽。如果存在Access特定的关键字,整个数据集将被拉到Access中以便在那里运行关键字。 - D'Arcy Rittich有一个适用于Windows的软件应用程序可以实现这一点(如果需要,模拟低带宽、延迟和丢包)。但它不是免费的。试用版有30秒的仿真限制。这是该产品的主页:http://softperfect.com/products/connectionemulator/
http://msdn.microsoft.com/en-us/library/bb188204(SQL.90).aspx
但是随着每个新版本的推出,Access可能越来越精通于使用服务器资源。
我仍然坚持我的简单建议:如果您想要最小化带宽消耗,同时仍然使用Access作为GUI,则通过查询是最好的选择,因为这样你就可以控制通过网络传输的数据量,而不是Access。
我仍然认为您最初的问题/方法是错误的:如果您的Access MDB文件一开始就位于LAN上(是吗?),则无需模拟网络延迟的影响。您需要嗅探Access生成的SQL语句,而不是引入某些任意和恒定的“网络延迟”因素。要比较使用位于LAN服务器上的MDB的Access GUI与针对SQL Server后端的升级Access GUI之间的差异,您需要评估Access从后端服务器向客户端传输的数据。即使是“升级”的Access在不使用通过查询的情况下也可能会成为带宽瓶颈,但是针对SQL-Server后端编写的正确客户端始终比访问位于LAN服务器上的MDB的Access更加节省网络带宽,ceteris paribus。