типы блокировки для MS Access 2010 INSERTS - PullRequest
0 голосов
/ 20 апреля 2011

У меня есть простое многопоточное приложение .NET, которое вставляет строки в БД MS Access 2010 с помощью ACE.Это только делает INSERT операции.Поскольку MS Access выполняет блокировку на уровне страниц для вставок, я иногда блокируюсь.

Можно ли изменить этот тип блокировки?Или существует «опасный режим», в котором я могу сказать ему полностью игнорировать блокировки и просто создавать новые страницы, если он обнаружит заблокированную?контролировать блокировку здесь?До сих пор у меня есть хак, который поддерживает одно общее соединение для этих транзакций, а затем объекты соединения просто ставят в очередь вставки.Это работает, но мне не нравится, что это соединение просто плавает вокруг.

1 Ответ

0 голосов
/ 29 апреля 2011

Какой интерфейс вы используете для обновления базы данных? OLEDB? Если так, эта статья, кажется, отвечает на вопрос:

PRB: Блокировка на уровне строк в Jet 4.0 недоступна с DAO 3,60

Кажется, нужно задать свойство объекта подключения:

Установить динамический объект подключения Свойства ("Jet OLEDB: Блокировка базы данных Mode ") до 1.

Для чего бы это ни стоило, я бы не считал Jet / ACE очень подходящим хранилищем данных для такого рода вещей, но это зависело бы от частоты вставок.

10 час, без проблем.

10 в минуту, я бы переключился на другую базу данных.

Кстати, использование одного соединения является предпочтительным методом работы с хранилищем данных Jet / ACE из-за накладных расходов, связанных с повторным созданием файла блокировки при каждом повторном открытии соединения.

...