Поделиться через


Вводные сведения о файлах блокировки (laccdb и ldb) в Access

Введение

Файл .laccdb или .ldb играет важную роль в многопользовательской схеме ядра СУБД Microsoft Access. Файл .laccdb или .ldb используется для определения записей, заблокированных в общей базе данных и кем. Файл .laccdb используется с базами данных ACCDB, а .ldb файл — с базами данных .mdb. .laccdb Файлы и .ldb обычно называются файлами блокировки.

Автоматическое создание и удаление файлов блокировки

Для каждой базы данных, открытой для общего использования, создается файл или .ldb для .laccdb хранения имен компьютеров и безопасности, а также для размещения расширенных блокировок диапазона байтов. Файл блокировки всегда имеет то же имя и находится в той же папке, что и открытая база данных. Например, при открытии (для совместного использования) образца базы данных Northwind.accdb в C:\users\<username>\documents\, автоматически создается файл с именем Northwind.laccdb в той же папке документов.

Каждый раз, когда последний пользователь закрывает общую базу данных, файл блокировки удаляется. За единственным исключением: если у пользователя нет прав на удаление или если база данных помечена как поврежденная. Затем файл блокировки не удаляется, так как содержит сведения о том, кто использовал базу данных в момент, когда она была помечена как поврежденная.

Привилегии, необходимые для папки

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

Примечание.

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

Содержимое файла блокировки

Для каждого пользователя, открывшего общую базу данных, ядро СУБД Access записывает запись в .laccdb файл или .ldb базы данных. Размер каждой записи составляет 64 байта. Первые 32 байта содержат имя компьютера (например, JohnDoe). Следующие 32 байта содержат имя безопасности (например, администратор). Максимальное число одновременных пользователей, поддерживаемых ядром базы данных Access, — 255. Поэтому размер файла блокировки никогда не превышает 16 КБ.

Примечание.

Решение файлового сервера может поддерживать до 255 одновременных пользователей, однако если пользователи вашего решения будут часто добавлять и обновлять данные, рекомендуется поддерживать не более 25–50 пользователей в решении файлового сервера Access. Дополнительные сведения см. в разделе Глава 1. Общие сведения о клиенте Microsoft Access 2000/разработке сервера.

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

Использование файла блокировки

Ядро базы данных Access использует сведения о файлах блокировки, чтобы запретить пользователям записывать данные на страницы или вносить записи, заблокированные другими пользователями, а также определять, кто заблокировал другие страницы или записи. Если ядро базы данных Access обнаруживает конфликт блокировки с другим пользователем, он считывает файл блокировки, чтобы получить имя компьютера и безопасности пользователя с заблокированным файлом или записью.

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

Не удалось заблокировать имя таблицы таблицы<. В настоящее время используется имя> безопасности пользователя <для <имени> компьютера.>

Примечание.

Состояние сведений в файле блокировки не влияет на состояние базы данных. Если файл блокировки поврежден, все содержимое базы данных должно работать правильно. Однако в любых сообщениях о конфликте блокировки может отобразиться шифрованный текст, а не имена пользователей.

С помощью Microsoft Visual Basic для приложений можно вывести список пользователей, которые выполнили вход в определенную базу данных. Дополнительные сведения о том, как это сделать, и пример кода см. в разделе Определение входа в базу данных с помощью Microsoft Jet UserRoster в Access.