2015-03-11 5 views
1

У меня возникли проблемы с запуском Make Table Query. Запрос отлично работает в качестве запроса выбора, возвращая таблицу со всеми столбцами, которые мне нужны. Тем не менее, когда я пытаюсь запустить его в качестве запроса таблицы, он застревает (нет прогресса в течение нескольких часов).Доступ к таблице запросов

Есть ли способ сделать таблицу с результатами запроса выбора без использования запроса Make Table? Набор данных составляет около 350 000 записей. Запрос Make Table работал с тестовой базой данных около 30 000 записей. Выполнение запроса Make Table с подмножеством (30 000) из 350 000 записей не работает.

+0

После небольшого исследования я столкнулся с http://support.microsoft.com/kb/178650. Хотя я не думаю, что это обязательно является решением вашей проблемы, это выявляет, что это, вероятно, сложность запроса, вызывающего проблему. Я предполагаю, что, хотя вы ограничили запрос до 30k, запрос все еще так же сложный и, вероятно, почему он все еще не работает. Хотя это всего лишь догадка. – Newd

+0

У меня были и очень медленные запросы. Обычно я запускаю их на ночь. Вы можете попробовать скопировать и вставить его в новую таблицу. Я думаю, может быть, вы могли бы попробовать решение VBA, которое создало бы таблицу из вашего запроса, но я этого не пробовал. – EvDev

ответ

0

Возможно, что происходит ограничение памяти и дискового ресурса. Запрос Make-Table в записях N = 350 000 расширяет базу данных и удваивает размер существующих данных (т. Е. В дополнение к ее производным данным). Помните, что число строк не является единственным фактором в размере: насколько широка таблица (до макс. 255) и типы данных (двойные целые числа, заметки и текстовые поля и т. Д.) Влияют на размер базы данных. Как видно из этого SO post, вы можете иметь таблицу с четырьмя столбцами из 7 миллионов записей, которая достигает 200 МБ!

Кроме того, по сравнению с обычным запросом на выбор запрос Make-Table выполняется так же, как в полноэкранном режиме, или выборочно сканирует таблицы несколько раз в зависимости от количества объединений (считайте декартовы продукты на записях) плюс он расширяется для создания нового объекта базы данных , а именно таблица со всеми ее определениями. Этот процесс может легко раздуваться и достигать предела доступа 2 ГБ или близко к нему, замедляя обработку. Возможно, если вы останетесь достаточно долго, сообщение об ошибке: Недостаточно места на временном диске. (Ошибка 3183) Может появиться.

Рассмотрит прохождение Make таблицы во внешние, пустые или меньшие базы данных Access, чьи таблицы могут быть связаны с текущей базой данных:

SELECT * INTO [NewTable] 
IN 'C:\Path\To\ExternalDatabase.accdb' 
FROM [QueryName] 

С автоматизированной линией VBA таблиц:

DoCmd.TransferDatabase acLink, "Microsoft Access", _ 
"C:\Path\To\ExternalDatabase.accdb", acTable, _ 
"SrcTableName", "DestTableName" 

В качестве альтернативы, свяжите существующую внешнюю, пустую/меньшую таблицу доступа и запустите запрос добавления в текущей базе данных:

INSERT INTO [LinkedTabe] SELECT * FROM [QueryName] 
Смежные вопросы