For each TblName in LinkedTableNames 'Create linked table "temp_From" that links to the existing mdb' 'Create linked table "temp_To" that links to the new sql server table ExecutePassthru "SET IDENTITY_INSERT " & TblName & " ON" db.Execute "INSERT INTO temp_To SELECT * FROM temp_From",dbFailOnError ExecutePassthru "SET IDENTITY_INSERT " & TblName & " OFF" Next TblName
第一次插入立即发生.后续插入尝试失败并显示错误:“当IDENTITY_INSERT设置为OFF时,无法在表’TblName’中为标识列插入显式值.”
我为该特定错误添加了一个Resume语句,还添加了一个计时器.事实证明,错误持续了600秒(十分钟),然后插入成功.
MS Access是否每10分钟自动刷新一次ODBC会话?有没有办法强迫它发生得更快?我错过了一些明显的东西吗
那些立即想要说“使用升迁向导”的人的背景信息:
我没有使用内置的升迁向导,因为我需要能够从头到尾编写整个操作的脚本.目标是在客户端位置执行交换机之前使其在测试环境中运行.
解决方法
'Jet WinXP/ Win7 32-bit:' HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\ODBC\ConnectionTimeout 'Jet Win7 64-bit:' HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Jet\4.0\Engines\ODBC\ConnectionTimeout 'ACE WinXP/ Win7 32-bit:' HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Access Connectivity Engine\Engines\ODBC\ConnectionTimeout 'ACE Win7 64-bit:' HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\MicrosoftAccess Connectivity Engine\Engines\ODBC\ConnectionTimeout
ACE为documented here:
ConnectionTimeout: The number of seconds a cached connection can remain idle before timing out. The default is 600 (values are of type REG_DWORD).
此密钥设置为默认值600.这是600秒或10分钟.我把它减少到十秒钟,代码加速了.
这绝不是完整的解决方案,因为设置低的默认值肯定会在其他地方引起问题.事实上,Tony Toews once recommended在使用无DSN连接时可能会更好地提高默认值.
我仍然希望找到问题第二部分的答案,即有没有办法强制刷新更快.
原文地址:https://www.jb51.cc/mssql/79946.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。