2009-10-24 4 views
0

У меня есть база данных Access, хранящаяся на ПК A, и приложение, расположенное на ПК B и C. Когда приложение загружает данные из базы данных, появляется сообщение об ошибке «База данных Microsoft Jet движок не может открыть файл '\ xxx.xxx.xxx.xxx \ FolderName \ Test.mdb'. Он уже открыт исключительно другим пользователем или вам требуется разрешение на просмотр его данных. Появляется. Однако, если я открываю файл базы данных, просматривая его с ПК B один раз и закрывая его, приложение может загружать данные без ошибок и так же, как и на ПК C.Не удается получить данные в базе данных MS Access

ПК связаны друг с другом, а приложение - настольное приложение. Может ли кто-нибудь дать мне какое-либо решение для загрузки данных без открытия файла базы данных один раз?

Спасибо.

ответ

1

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

+1

Однако, если в базе данных одновременно находилось несколько человек, это не будет полезно, так как вы увидите несколько ПК в LDB-файле, не имея представления о том, кто был последним. Также это редко случается и обычно только когда происходит сбой доступа к ПК или компьютер BSODed или внезапно отключен. –

0

sharing an Access database on a network (MDB)

Для совместного доступа к базе данных, просто поместите * .mdb файл в сетевой папке и открыть его через сеть.

+0

Я уже поместил файл БД в сеть, но когда приложение было доступно, появляется сообщение об ошибке (см. Выше). Мне нужно открыть БД один раз, после чего приложение сможет получить доступ. Я установил безопасность для всех (чтение, запись) в свойстве файла базы данных. –

1

В одноранговой сети вам необходимо установить разрешения для полного контроля. Пользователи должны иметь возможность создавать и удалять LDB-файл. На файловом сервере подробные разрешения будут похожи на чтение, запись, создание и удаление.

+0

Им не нужно удалять LDB-файл, хотя это позволяет разрешить поврежденный LDB пользователям прозрачно. Помните, что без разрешения DELETE LDB будет обрабатываться точно так, как это было до Jet 3, то есть файл LDB остался на диске после того, как все его закрыли и не удалили. –

+0

Да, но Мне нравится быть аккуратным и опрятным и удалять LDB-файл, поскольку последний пользователь выходит из файла базы данных BE. Не обязательно согласен. –

0

Это звучит как проблема с сетью для меня. Если вы связали свою таблицу с именем UNC (очевидно, используя IP-адрес, который довольно нецелесообразен, если только это не жесткий IP-адрес, который не может измениться), это хорошо, но сопоставленный диск может иметь одно преимущество, если вы установите он повторно подключается при входе в систему (вместо повторного подключения только тогда, когда запрашиваются данные по нему), а также то, что соединение с «сервером» уже инициализировано в момент, когда вы сначала запросите его через Access. Если это не так, это может привести к замедлению и ошибочным сообщениям об ошибках.

Другим вариантом было бы добавить в Autoexec.bat клиентских ПК:

NET USE \\xxx.xxx.xxx.xxx\FolderName 

Вам не нужно отобразить его на букву диска, просто объявить его как доступный. Это будет делать то же самое, что и автоматически переподключенный сопоставленный диск, но нет GUI для его настройки (как при сопоставлении диска).

Смежные вопросы