Ошибки сжатия БД MS Access
Есть БД в access 2016 для предварительной обработки внешних данных (связанные таблицы CSV, временные, которые после использования очищаются, и результирующие, которые потом другими БД используются, и собственно запросы на приведение исходных данных в нужный формат, добавление/обновление записей и набор своих функций в VBA). В свойствах БД было включено "сжимать при закрытии".
До недавнего времени все работало, но вдруг при выполнении стандартной процедуры обработки база стала просто закрываться, без ошибок, предупреждений и т.п.
Опытным путем выяснилось, что после сжатия аксес не может выполнить запросы на выборку из связанных таблиц CSV. Спасает создание нового файла и импорт в него всего содержимого из испорченного, но как только БД сжимается все повторяется снова.
Сам вопрос что это может быть и как с этим бороться? Каждый раз пересоздавать файл как-то неохота...
Ответы (1 шт):
- Во-первых посмотрите на объем базы. Если размер файла после работы приближается к 2-м Гб, то это может быть причиной проблемы. Разбивайте базу на несколько файлов.
- Также это может быть связано с каким-нибудь багом в Акцессе. Вам нужно попробовать выяснить, после выполнения каких запросов происходит повреждение и попробуйте их переделать. Тут требуется шаманский бубен размером не менее 50 см и много времени :)
- Избегайте использования опции сжатия при закрытии, это ни к чему хорошему не приведет.
- Перепроектируйте базу так, чтобы ее не нужно было каждый раз сжимать. Обычно база раздувается из-за временных таблиц, в которые пишутся большие объемы промежуточных данных. Вынесите временные таблицы в отдельный файл и используйте копию файла с пустыми таблицами при каждом старте приложения, удаляя предыдущий файл с временными данными. Так частое сжатие не потребуется
- Не используется ли один файл с пользовательским интерфейсом несколькими пользователями одновременно? Такого быть не должно, у каждого пользователя должен быть свой фронтэнд, иначе существует высокий риск повреждения базы.