У меня есть два приложения VC ++ 6, которые записывают / обновляют данные в общей базе данных Access 2000 - оба приложения загружают информацию из разных регистраторов данных.
Время от времени мы получаем исключение при попытке добавить / редактировать / обновить:
(3260) Не удалось обновить; В настоящее время
заблокирован пользователем 'admin' на машине
'ABC123'.
Я уверен, что проблема связана с блокировкой записи в базе данных.
Мы используем CDaoRecordset для доступа к данным. Из чтения документов видно, что по умолчанию используется оптимистическая блокировка страницы базы данных, в которой находится запись. Если другой процесс пытается отредактировать / обновить запись на той же странице, он получает ошибку, которую мы видим.
Переход к SQL Server на данном этапе не вариант - это не простое изменение из-за структуры вещей.
Мне интересно, смогу ли я сделать записи в затронутых таблицах достаточно большими, чтобы в каждую страницу данных 2k помещалась только одна запись. Если я сделаю каждую запись длиной 1100 байт, то каждая запись должна получить свою страницу, решая проблему блокировки. Я знаю, что он будет занимать больше дискового пространства, однако на данный момент это не проблема, поскольку затронутые таблицы имеют довольно малый объем.
Это сработает? Можно ли разделить запись в Access 2000 на две страницы?