Я работаю над повышением размера набора базовых баз данных 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
Первая вставка происходит немедленно.Последующие попытки вставки завершаются неудачно с ошибкой: «Невозможно вставить явное значение для столбца идентификаторов в таблице« TblName », если для параметра IDENTITY_INSERT задано значение OFF.»
Я добавил оператор Resume для этой конкретной ошибки, а также таймер.Получается, что ошибка продолжается ровно 600 секунд (десять минут), а затем вставка проходит успешно.
MS Access автоматически обновляет свои сеансы ODBC каждые 10 минут?Есть ли способ заставить это произойти быстрее? Я что-то упускаю из виду?
Справочная информация для тех, кто сразу захочет сказать «Использовать мастер увеличения»:
Я не пользуюсь встроенным мастером увеличения, потому что мне нужно иметь возможность писать сценарий всей операции от начала до конца.Цель состоит в том, чтобы запустить его в тестовой среде перед запуском коммутатора в расположении клиента.