我正在將一組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