Типы блокировки для 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 из-за накладных расходов, связанных с повторным созданием файла блокировки при каждом повторном открытии соединения.