我正在将一组MS Access后端数据库升迁为SQL Server。我编写了SQL脚本来在SQL Server中创建表格模式。现在我正试图填充表格。大多数表具有自动编号的主键。这是我的一般方法:强制SET SET IDENTITY_INSERT从MS Access更快地生效
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会话吗?有没有办法强制这种情况发生得更快?我是否缺少明显的东西?
这些背景信息谁就会立刻想说“使用升迁向导”:我不使用
内置的升迁是因为我需要能够从脚本启动整个操作完。目标是在执行客户端位置的交换机之前使其在测试环境中运行。
+1好主意。我没有尝试第一个建议,因为我找到了我在埋入注册表后的设置(我将添加它作为单独的答案)。第二种方法直接使用SQL Server Mgmt Studio,但隐藏了所需的内在低效率。它实际上涉及将所有记录复制到临时表(使用SET IDENTITY_INSERT ON/OFF),删除原始表并将临时表重命名为原始表。我的一张桌子上有200万条记录,所以我想避免这种低效率。 – mwolfe02