MS Access Append Query仅在Wifi连接上运行缓慢



我正在使用MS Access将100条记录插入本地SQL服务器上的表中。

当我的电脑通过以太网连接到服务器时,APPEND查询将在不到一秒钟的时间内运行。

当同一台电脑通过WiFi路由器连接到此服务器时,需要30多秒。

详细信息:

  1. PC:Core7 8G RAM运行Win10,并安装了所有更新。

  2. MS Access:安装了所有更新的MS Access 2003。我也尝试过MS Access 2010。APPEND查询是:

INSERT INTO dbo_tableA ( A, B, C ) SELECT tableB.X, tableB.Y, tableB.Z FROM tableB;

这些表只包括3个索引整数和一个关键字字段。没有计算字段,数据库已压缩。使用代码docmd.runsql时也会得到同样的结果。通过WiFi进行SELECT查询的速度很快。

  1. 服务器:Xeon 8G RAM,运行在带有SQL 2005的Windows Server 2003上,并安装了所有更新。没有其他用户连接。

  2. 网络:WiFi路由器包括一个多端口交换机。服务器直接连接到此交换机。

当前没有人连接到Wifi。它是5Ghz 802.11n。speedtest.xfinity.com在以太网端口上运行时,下载速度为27Mbps,上传速度为6Mbps,在WiFi上运行时也是如此。

非常感谢您的回复。

简单的答案是,永远不应该在后端通过WiFi连接的情况下运行拆分数据库。始终使用有线连接。

原因是,WiFi连接可能会出现严重的中断,而数据库引擎从来没有,现在也不是为之设计的。事实上,如果使用WiFi,您的后端迟早会损坏。

如果必须使用Wifi,请将前端安装在与后端有线连接的终端服务器上,并使用远程桌面运行前端。

与其说这是一个"答案",不如说这是一些调试提示。这个问题确实离题了,因为它涉及到重要的调试,但我确实有一些提示太长了,无法发表评论。

现在我看到[tableB]在插入SQL Server的Access DB中。Access可能会生成许多单独的语句来逐个插入数据行,而不是执行在SQL Server上执行的单个查询。既然SQL Server看不到Access表,而且没有用于插入多个值的Access SQL语句,那么它怎么能做到这一点呢?

要了解实际情况,我建议使用ODBC跟踪。从该网页中还不清楚,但如果您安装了用于连接到SQL Server的ODBC驱动程序,则将安装实用程序"ODBC数据源管理员"。只需单击"开始"按钮并键入"ODBC…",它就会显示"ODBC数据源(32位(",可能还会显示"ODBC Data Sources(64位("。只使用32位,因为Access将只使用这些驱动程序。按照其他说明捕获发送到服务器的所有SQL命令。

我现在可以建议的唯一解决方法是使用VBA生成您自己的多语句Transact-SQL文本,并使用ODBC Direct将其发送到服务器。这将避免过度生成语句和处理Access。要"正确"(即以最高效、最安全的方式(做到这一点,需要了解Transact-SQL、创建和处理服务器事务、直接访问SQL表与参数化过程等。

最新更新