Вопрос

Сейчас у меня есть проект, в котором я хотел бы иметь возможность извлекать строки из базы данных Access, которую сторонний продукт использует для хранения своей информации.Вероятно, одновременно с моим процессом «экспорта» к этой базе данных будет обращаться небольшое количество пользователей, поэтому меня немного беспокоит целостность данных и одновременный доступ.

Могу ли я столкнуться с проблемами в процессе импорта .NET (с использованием LINQ/ADO.NET/?), когда он пытается извлечь данные из MDB в то время, когда кто-то другой сохраняет строку?Как работает блокировка Access?

Это было полезно?

Решение

Проблем не должно быть.Проблемы могут возникнуть только при параллельных операциях записи.Блокировка MS Access на основе блокировок файлов в файле ldb.Блокировки происходят только на страницах, а не на всем файле.Поскольку блокировки находятся в файле ldb, а не в файле mdb, то проблем с параллельным чтением не возникает.

Другие советы

В предыдущей работе с Access (когда я использовал 2003 для работы) единственное, с чем я столкнулся, это то, что иногда чтение блокировало строки чуть выше и ниже текущего чтения.Однако я считаю, что это могла быть изолированная проблема с нашим приложением.

Открывая базу данных, не пытайтесь открыть ее в режиме только для чтения (хотя вы можете подумать, что это имеет смысл).Когда вы являетесь первым пользователем, Access открывает файл mdb в режиме только для чтения и не создает ldb, заставляя всех последующих пользователей также находиться в режиме только для чтения.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top