Типы блокировки для MS Access 2010 INSERTS

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

Есть ли способ изменить этот тип блокировки? Или есть "опасный режим", в котором я могу сказать ему полностью игнорировать блокировки и просто создавать новые страницы, если он обнаружит заблокированную?

РЕДАКТИРОВАТЬ: Есть ли вообще способ управления блокировкой здесь? До сих пор у меня есть хак, который поддерживает одно общее соединение для этих транзакций, а затем объекты соединения просто ставят в очередь вставки. Это работает, но мне не нравится, что это соединение просто плавает вокруг.

1 ответ

Решение

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

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

Кажется, это вопрос установки свойства объекта соединения:

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

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

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

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

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

Другие вопросы по тегам