Access 2013 DB загадочно меняется только для чтения - PullRequest
0 голосов
/ 15 октября 2018

Я работаю в команде из 10 инженеров-тестировщиков, использующих общую базу данных Access 2013 на сетевом сервере.Каждый имеет доступ на чтение / запись к БД.Любой может произвольно открыть базу данных, записать в нее данные, а затем закрыть ее.Все эти действия выполняются с помощью кода Labview «за кулисами» для пользователя.т. е. пользователь запускает определенный тест в Labview, код (перед началом теста) открывает общую БД, записывает информацию о тесте в таблицу, а затем закрывает ее перед началом теста.У нас было 4 случая, когда кто-то жаловался, что внезапно не может получить доступ к этой общей базе данных.В ходе расследования мы обнаружили, что БД каким-то образом превратилась в файл только для чтения, и поэтому попытки Labview записать в него не удаются.Мой вопрос не в том, «как сделать базу данных для чтения / записи снова» (я нашел другие сообщения на эту тему), а в том, почему база данных для чтения / записи вдруг становится доступной только для чтения?Мы попытались отследить это до неудачной «закрытой БД», но ничего не нашли.Всякий раз, когда это происходит, нет файла блокировки (.lck), связанного с БД, поэтому он не выглядит заблокированным.

Есть идеи, что здесь может происходить?

Заранее спасибо!

1 Ответ

0 голосов
/ 15 октября 2018

Тот факт, что различные объекты обращаются к файлу БД, поднимает больше красных флажков о возможных проблемах сети.База данных Access на основе файлов , а не предназначена для надежного доступа к глобальной сети, и многие вообще не одобряют такую ​​конфигурацию.

Хотя вы не сообщаете об остаточном файле блокировки, файлы * .ldb и * .laccdd предназначены только для алгоритмов внутренней блокировки ядра базы данных.Он работает в сочетании с механизмом блокировки ОС файлового сервера.Я подозреваю, что у вас есть клиент базы данных, чья блокировка файла ОС не была снята должным образом, поэтому блокировка сохраняется до истечения времени ожидания.Это объясняет ваши наблюдения по поводу отложенной блокировки даже после отключения других клиентов.Вы упомянули перезагрузку клиентских машин, но я подозреваю, что сброс файлового сервера хоста немедленно снял бы блокировку.

Конечно, в вашей ситуации лучше всего было бы использовать совершенно новое решение на основе сервера, возможно произвестипромежуточное решение, чтобы избежать полного пересмотра кода LabView.Установите и настройте SQL Server, затем измените таблицы базы данных Access, чтобы они связывали таблицы с бэкэндом SQL.Каждый клиент LabView будет иметь свою собственную копию БД доступа, связанную с тем же сервером.Это краткое и грязное описание и, возможно, не идеальное, но оно может устранить эту конкретную проблему.

...