Toster_XP
Дата: 26.02.2008 19:12:47
Имеется Access 2000 и большая таблица с данными на сервере Navision - 9,5 млн. записей (!)
Хочется - заимпортировать таблицу в Access.
Делаю все по-простому, так как опыта пока очень мало: просто с помощью меню "Import table" пытаюсь импортировать ее через SQL Server Driver. Вылетает обычно ошибка "Invalid Argument". Ума не приложу почему это происходит, так как никакого кода от руки не пишу, просто использую меню. Странность еще состоит в том, что рядом в большой таблицей на серваке лежит маленькая (56 записей) с почти таким же именем (в имени есть "." [точка] - думал проблема с этим) и ее импорт проходит успешно. Но если пробовать импортировать маленькую после вылетания ошибки при импорте большой - то тут тоже выдает Invalid Argument %)
Пробовал сделать по-другому залинковал исходную таблицу и при помощи Make Table Query решил ее "клонировать". Тут вылетает ошибка "[Microsoft][ODBC SQL Server Driver]Timeout Expired (#0)". Еще опятным путем установлено, что если ограничить запрос при помощи критерий до результата в ~200 тыс. записей, то все проходит нормально, если больше 200 тыс. - ошибка.
Заранее прошу не бить ногами за, возможно, путанное объяснение сути проблемы - я совсем начинающий. Готов ответить на любые уточняющие вопросы. Буду благодарен за любые советы.
бабай
Дата: 27.02.2008 23:21:39
в общем плане такая ошибка говорит о том, что завершилось время на выполнение запроса (по созданию таблицы),
а запрос так и не успел завершиться за отведенное ему по умолчанию время.
Если вы совсем не владеете vba и работой с объектами достума к данным, то попробуйте для начала просто увеличить время ожидания ODBC в своем запросе на создание таблицы.
я так понял, что вы строите этот запрос над линкованной odbc таблицей.
Откройте таблицу, полистайте ее вперед-назад. Убедитесь, что визупально искажений данных нет.
Закройте таблицу. Снова откройте и дайте ей команду перейти на последнюю запись ( в кнопках перехода по записям - правая). Оцените хотя бы приблизительно время, в течение которого будет происходить переход на последнюю запись. В свойствах своего запроса задайте время ожидания ODBC не менее произведенной оценки.
Данные из линкованной через odbc таблицы будут поступать относительно не быстро. Так она устроена.
Возможно быстрее операция пройдет, если запрос на создание таблицы строить не над линкованной odbc-таблицей, а над т.н. "запросом к серверу" (в свойствах которого тоже можно задать время ожидания odbc).
В вашем случае я, исходя из личных, плохо формализуемых с разбегу предпочтений, строил бы запрос не на создание таблицы,
а запрос на добавление данных к заранее созданной таблице подходящей структуры.