Я подозреваю, что запуск INSERT из Access со связанными таблицами ODBC будет очень медленным, поскольку Jet / ACE имеет тенденцию разбивать каждую строку на отдельный оператор INSERT. Jet / ACE является хорошим гражданским пользователем многопользовательской серверной базы данных, поскольку это позволяет серверу сериализовать операции, сгенерированные несколькими пользователями, и чередовать обновления других с массовым обновлением. Но это ужасно медленно для больших наборов данных, и когда вы делаете что-то вроде себя, которое инициализирует пустой набор данных, это означает, что слишком"гражданской ответственности".
Возможно, вы захотите переименовать существующую таблицу и вместо этого экспортировать таблицу доступа до SQL Server через ODBC DSN. Если DSN уже определен, вы просто выбираете EXPORT в меню FILE в Access, выбираете DSN в качестве пункта назначения, а Jet / ACE позаботится об остальном, создав таблицу на сервере и загрузив все данные. Это очень эффективно (то есть, не будет делать это по одной записи за раз), поскольку Jet / ACE знает, что заполняет таблицу, которой раньше не было.
Теперь, результат может быть не совсем тем, что вам нравится (Jet / ACE может не получить все типы данных правильно из-за аспектов перевода драйверов ODBC, но типы данных должны быть совместимы, если точные типы данных являются самыми строгими по желанию), но тогда у вас будет полный набор данных в базе данных SQL Server, а затем вы сможете добавить его из одной таблицы SQL Server в правильно структурированную.
Вы хотели бы выполнить проверку данных, чтобы убедиться, что никакие данные не были потеряны или неправильно преобразованы (примером этого может быть текстовое поле почтового индекса, преобразуемое в число - это фактически никогда не произойдет, но это то, что вы хотели бы проверить), но я думаю, что для набора данных объемом 500 МБ, когда у вас нет хороших инструментов для увеличения размера (потому что версии Access не могут идти в ногу с последними версиями SQL Server), это может сделать работу более эффективно с меньшим количеством работы.