Подтвердить что ты не робот

Не уменьшился бы размер файла MS Access (.mdb) после удаления содержимого базы данных?

Я вставлял данные в базу данных MS Access с помощью драйвера JDBC-ODBC. Пустой файл mdb был 2 КБ. После заполнения этой базы данных размер вырос до 155 МБ. Затем я удалял данные. Но я обнаружил, что размер mdb остается таким же, как и 155 МБ. У меня нет ошибок. Но так ли это нормально? Я ожидаю, что размер файла уменьшится. Если он сконструирован таким образом, какова его идея? Благодаря

4b9b3361

Ответ 1

MS Access не возвращает пространство для записей, пока вы не уплотнили базу данных.

Это то, что вы должны сделать для базы данных доступа как часть вашего регулярного обслуживания, иначе вы столкнетесь с некоторыми довольно болезненными проблемами.

Вы можете скомпилировать базу данных либо через интерфейс доступа MS Access (Инструменты → Утилиты базы данных →
 Compact и Repair Database), вы можете использовать командную строку, используя:

msaccess.exe "target database.accdb" /compact 

N.B. переключатель /Compact должен быть после целевой базы данных

Ответ 2

MS Access не освобождает пространство, используемое в записях даже после их удаления. Вы можете освободить место вручную, когда вам нужно или автоматически при каждом закрытии приложения.

Чтобы сделать это вручную, используйте утилиту Compact и Repair:

  • Создайте резервную копию своей базы данных, так как есть ошибка в Access 2007, которая может удалить вашу базу данных во время процедуры уплотнения.

  • Если вы уплотняете многопользовательскую (общую) базу данных, расположенную на сервере или в общей папке, убедитесь, что никто другой не открыл ее.

  • В меню "Сервис" выберите "Утилиты базы данных" и нажмите "Компакт" и "Восстановить базу данных".

Сделать это автоматически при закрытии приложения:

  • Откройте базу данных, в которой MS Access будет компактным автоматически.

  • В меню "Сервис" выберите "Параметры", а затем выберите вкладку "Общие".

  • Установите флажок Compact On Close.

После удаления данных и уплотнения база данных не удивляется, если она еще больше 100 КБ. Существует определенный объем накладных расходов, которые невозможно удалить после добавления данных в первый раз.

Кроме того, будьте осторожны, что значения поля AutoNumber ведут себя иначе, чем объявлено после процедуры уплотнения. Согласно документации MS Access 2000, если вы удаляете записи из конца таблицы с полем AutoNumber, уплотнение базы данных сбрасывает значение AutoNumber, Таким образом, значение AutoNumber для следующей добавляемой записи будет больше, чем значение AutoNumber последней восстановленной записи в таблице.

Я не нашел, что это так: если у вас есть 100 записей с автосозданием и удалите последние 50, следующая запись AutoNumber (согласно документации) должна быть пронумерована "51". Но, по моему опыту, вместо него "101".

Ответ 3

Первая остановка, как упоминалось, должна заключаться в том, чтобы сжать/восстановить базу данных. Однако вы также можете получить некоторую экономию за счет этого, создав новую базу данных и импортируя все объекты из старого.

Ответ 5

Первая остановка, как упоминалось, должна заключаться в том, чтобы сжать/восстановить базу данных. Однако вы также можете получить некоторое сохранение размера за счет создания новой базы данных и импорта всех объектов из старого. Прошлое, что, превращая его в MDE, вы должны получить больше волос. Как всегда, не играйте со своей производственной копией. Также, если вы идете с MDE, убедитесь, что вы правильно разделили базу данных. (И, конечно, сохраните копию исходного MDB, если вам нужно будет вносить изменения в будущем.)