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

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

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

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


person Matthew    schedule 20.04.2011    source источник


Ответы (1)


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

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

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

Установите для динамических свойств объекта Connection («Jet OLEDB: Database Locking Mode») значение 1.

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

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

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

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

person David-W-Fenton    schedule 29.04.2011
comment
Я попытаюсь это сделать. Этот проект пока отложен. Это действительно помощник при отладке, а не производственный код, поэтому в методах есть много недостатков. - person Matthew; 06.05.2011