我正在将MS Access 2003应用程序升级到SQL Server后端。在我的开发机器上,SQL Server是本地的,因此性能非常好。我想用远程SQL Server测试性能,以便在重新设计应用程序时考虑网络延迟的影响。我期待一些现在看起来很快的查询在部署到生产环境后运行得非常慢。
如何在不使用虚拟机或将SQL重定位到另一台计算机的情况下减慢(或模拟远程)SQL Server的速度?是否有某种代理或Windows实用程序可以为我执行此操作?
答案 0 :(得分:5)
答案 1 :(得分:0)
您可能在误解下操作。 MS-Access支持所谓的“异构连接”(即来自各种后端的表可以包括在同一查询中,例如组合来自Oracle和SQLServer和Access的数据以及Excel电子表格)。为了支持此功能,Access在客户端中应用WHERE子句过滤器,除非存在针对智能后端的“传递”查询的情况。在SQL Server中,过滤发生在服务器上运行的引擎中,因此SQL Server通常会向客户端发送更小的数据集。
您的问题的答案也取决于您对“远程”的意思。如果您在同一网络上相互访问Access和SQL Server ,如果Access MDB文件驻留在文件上,则服务器上运行的SQL Server将仅占用Access的一小部分带宽。服务器。 (当然,如果MDB驻留在本地PC上,则不会消耗网络带宽。)如果您正在通过云比较LAN上的Access与通过宽带的SQL Server,那么您将比较标称的100 mbit / sec管道DSL或电缆带宽,即高速电缆的标称值大约为20 mbit / sec,最多可达带宽的五分之一,可能要少得多。
因此,您必须更加具体地了解您要比较的内容。
您是否正在使用驻留在文件服务器上的Access MDB的本地PC上的Access客户端与驻留在同一网络上的另一台服务器上的SQL Server中的其他类型的客户端消费数据进行比较?您是否会继续使用Access作为客户端?您的查询是否会被传递?
答案 2 :(得分:0)
Windows有一个软件应用程序可以做到这一点(如果需要,可以模拟低带宽,延迟和损失)。它不是免费的。试用版具有30秒的仿真限制。以下是该产品的主页:http://softperfect.com/products/connectionemulator/
答案 3 :(得分:0)
@RedFilter:您应该指出您正在使用的Access版本。 2006年的这份文件表明,Access通过网络传达给客户端的故事比查询是否包含“特定于访问的关键字”更复杂。
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从后端服务器通过线路连接到客户端的数据。除非你使用传递查询,否则即使是“升迁”的访问也可能是带宽低谷。但是,对于SQL-Server后端,正确编写的客户端将始终比使用位于LAN服务器上的MDB的网络带宽更加简洁, ceteris paribus 。