我正在将一套 MS Access 后端数据库升级到 SQL Server。我编写了 SQL 脚本以在 SQL Server 中创建表模式。现在我正在尝试填充表格。大多数表都有自动编号的主键。这是我的一般方法:
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 会话?有没有办法让这种情况发生得更快? 我错过了一些明显的东西吗?
对于那些马上想说“使用升迁向导”的人的背景信息:
我没有使用内置的升迁向导,因为我需要能够从头到尾编写整个操作的脚本。目标是在客户端位置执行切换之前在测试环境中运行它。