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