Как мне выполнить резервное копирование нескольких используемых баз данных MS Access?
Отказ от ответственности: я инженер-программист, а не ИТ-специалист, извините, если некоторые из моих предложений глупы или иным образом смешны.
Приложение Windows, которое будет работать постоянно, подключено и постоянно взаимодействует с несколькими базами данных MS Access. Приложение может выполнять чтение или запись в любую из этих баз данных в любое время. Некоторые базы данных небольшие и остаются примерно одинакового размера. Некоторые из баз данных (относительно) большие (несколько сотен тысяч строк) и постоянно добавляются. Мы хотели бы делать резервные копии этого набора баз данных каждые X минут, не закрывая приложение. Резервная копия будет либо на локальном хосте (2-й жесткий диск), либо в локальной сети (100 Мбит).
Приложение будет работать на Windows XP или Windows 7.
Я действительно понимаю, что реальным решением является "прекратить использование MS Access", что в настоящее время не вариант.
Вариант 1. Копирование файлов
Мы могли бы просто скопировать файлы, используя команду windows copy (или xcopy?) Или какой-либо (желательно бесплатный) сторонний копировщик файлов. Есть ли проблемы с этим?
Недостатком этой опции является то, что большие базы данных полностью копируются каждый раз, что может занять более нескольких секунд. Что происходит, когда база данных MS Access записывается во время копирования? (Повреждение данных? Ошибка копирования?)
Вариант 2: синхронизировать
Мы могли бы запустить какой-нибудь сторонний процесс, который синхронизировал бы резервные базы данных MS Access с их действующими аналогами. Многие существующие программы, которые я рассматривал, поддерживают "настоящие" механизмы баз данных, такие как SQL Server, Postgres и т. Д., Но, похоже, MS Access здесь не хватает поддержки (или, может быть, я просто не ищу правильные ключевые слова).
Вариант 3?
2 ответа
Каждый раз, когда у вас открыт файл, вы рискуете получить поврежденную копию, когда просто копируете ее в другое место. Как вы уже упоминали, Access на самом деле не предназначен для использования в качестве многопользовательской базы данных, и я не знаю утилит, которые будут безопасно выгружать содержимое в другой файл, как вы можете с большинством баз данных SQL.
Возможно, вам повезет, используя объемные теневые копии. Получение реальной программы резервного копирования для Windows должно позволить вам сделать это, так как она работает на уровне блоков; Встроенная утилита резервного копирования Windows может сделать это за вас. Это позволит обойти проблему блокировки файлов.
Если решение для резервного копирования Windows не работает, возможно, вам потребуется окно обслуживания, в котором вы просто закроете все подключения удаленного доступа и создадите простую копию в другом месте.
Лучше всего получить программу резервного копирования, которая поддерживает создание резервных копий, несмотря на блокировки файлов в NTFS. В будущем это избавит вас от головной боли, связанной с управлением, и позволит избежать применения клейких лент.
И, насколько мне известно, нет способа кластеризовать или зеркалировать базу данных Access. Это просто не было предназначено для этого, и когда организация достигает этого уровня, они обычно используют настоящий механизм базы данных, который может поддерживать резервное копирование с помощью дампа, кластеризации или зеркалирования, поэтому существуют другие установки, из которых можно создавать "живые" резервные копии.,
Вариант 3: КУПИТЬ ПРАВИЛЬНЫЙ ИНСТРУМЕНТ!
Вы используете Access для чего-то, для чего оно никогда не было разработано - для бесперебойной работы, для большого количества параллельных операций и для хранения больших объемов данных.
Доступ - ИГРУШКА - претендент на трон базы данных, который подходит для очень маленьких проектов, которые не являются критичными для бизнеса.
Описанный вами сценарий использования предназначен для SQL Server. Потратьте деньги и получите то, что вам нужно: базу данных, которая может обрабатывать большие объемы данных с использованием большого числа параллелизмов, с репликацией и / или резервными копиями, которые можно запускать без существенного влияния на ваших пользователей.