Чтение и запись из одной и той же базы данных Ms Access из множества приложений одновременно - PullRequest
1 голос
/ 12 октября 2011

Я проверил это, и я вижу, что возможно иметь несколько открытых OleDbConnection с из нескольких приложений (или столько же экземпляров одного и того же приложения) в одной базе данных Access, и даже иметь много OleDbDataReader открытых в то же время.

Но это безопасно? Должен ли я позаботиться о чем-то особенном или двигатель 1005 * позаботится обо всем? Что произойдет, если я читаю одну таблицу данных при одновременной записи в одну и ту же таблицу?

Я просто не хочу натыкаться на неприятности или сюрпризы позже.

Ответы [ 4 ]

2 голосов
/ 12 октября 2011

Доступ, как правило, не является механизмом одновременной обработки данных.Любая причина, по которой вам следует избегать MySQL, Oracle или других соответствующих СУБД?

Некоторые причины:

-Вы не гарантируете согласованное представление для чтения.
-Вы получаете значительную возможность обновленияобновленная запись без ведома.
-Вы можете столкнуться с неразрешимыми блокировками
-У вас нет централизованного менеджера транзакций

1 голос
/ 12 октября 2011

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

0 голосов
/ 12 октября 2011

Мой личный опыт показывает, что для 5–10 пользователей (каждый с одним подключением) с «не больше данных, которые пользователь может ввести, введя какой-то ввод в форму», используемых в локальной сети, доступ в качестве бэкенда нормальный , Эта статья отражает мой личный опыт:

http://www.tek -tips.com / faqs.cfm? FID = 4462

Реальные ограничения и точка, в которой вы должны искать «настоящую» базу данных клиент / сервер, сильно зависят от деталей вашей среды - если вы хотите знать, вам придется запустить свои собственные тесты.

Относительно одновременного чтения / записи в таблицу: Access использует возможности блокировки байтового диапазона базовой файловой системы для устранения коллизий (см. Здесь http://en.wikipedia.org/wiki/File_locking для получения дополнительной информации). Этот механизм работает в большинстве современных файловых систем, таких как NTFS, но плохо масштабируется для многих пользователей.

0 голосов
/ 12 октября 2011

Для прямого ответа на ваш вопрос What would happen if I'm reading one data table while writing to the same table at the same time?

Зависит от значения по умолчанию IsolationLevel. Вы можете прочитать о том, что такое уровни изоляции и как их указать, в Защита целостности данных с помощью транзакций в ADO.Net .

Но, как другие предложили, пожалуйста, используйте что-то еще. SQL Server 2008 Express полнофункциональный и в основном бесплатный. Если вы все еще хотите использовать базу данных без установки серверного программного обеспечения, я бы даже порекомендовал SQL Server Compact Edition через Access.

...