MS Access执行Pass Through查询遇Error 3035资源耗尽问题求助
Access Pass Through查询批量Insert的锁资源与字符串长度问题
- 为将数据同步负载从性能较弱的Access转移至SQL Server,采用Pass Through查询执行批量Insert操作。
- 需循环处理的大表先复制到本地Access处理(目标本地表约25k条记录),再同步到SQL Server:直接用Access查询同步耗时约1小时,而通过Pass Through的Insert语句仅需47秒,但传递过长文本字符串时会触发Error 3035“System resources exceeded.”
已尝试的处理操作
- 编写
RunPassThruQdf和LoadUnidentifiedFromLocal两个VBA函数实现批量Insert,通过i Mod 500控制每批次插入的记录数。 - 首次触发错误时,通过设置
DAO.DBEngine.SetOption dbMaxLocksPerFile, 1000000解决,但当锁数量超出该阈值后问题复现。 - 尝试过重启电脑、压缩修复数据库,错误仍间歇性出现。
疑问
- 既然增大最大锁数量能临时解决问题,有没有办法清除当前已存在的锁?
- Pass Through查询可传递的字符串最大长度是多少?(此前设置
i Mod 500时,字符串长度约65k时触发错误)
内容的提问来源于stack exchange,提问作者Jason Brady
相关产品推荐
相关产品推荐

