For a Microsoft Access 97 version of this article,
see
136128.
Moderate: Requires basic macro, coding, and interoperability
skills.
This article applies only to a Microsoft Access database (.mdb).
For a Microsoft Access 2002 version of this article,
see
299373.
MORE INFORMATION
Automatic .ldb File Creation and Deletion
For every database opened for shared use, an .ldb file is created
to store computer and security names and to place extended byte range locks.
The .ldb file always has the same name as the opened database (.mdb) and is
located in the same folder as the opened database. For example, if you open
(for shared use) the Northwind.mdb sample database in the C:\Program
Files\Microsoft Office\Office\Samples folder, then a file called Northwind.ldb
is automatically created in the same folder.
Whenever the last user
closes a shared database, the .ldb file is deleted. The only exceptions are
when a user does not have delete rights or when the database is marked as
corrupted; then, the .ldb file is not deleted because it contains information
about who was using the database at the time the database was marked as
corrupted.
Required Folder Privileges
If you plan to share a database, the .mdb file should be located
in a folder where users have read, write, create, and delete privileges. Even
if you want users to have different file privileges (for example, some
read-only and some read-write), all users sharing a database must have read,
write, and create permissions to the folder. You can, however, assign read-only
permissions to the .mdb file for individual users while still allowing full
permissions to the folder.
NOTE: If a user opens a database with exclusive access (by clicking
the
Exclusive check box in the
Open dialog box), record locking is not used; therefore, Microsoft
Access does not attempt to open or create an .ldb file. If the database is
always opened for exclusive use, a user needs only read and write privileges to
the folder.
The .ldb File Contents
For each person who opens a shared database, the Jet database
engine writes an entry in the database's .ldb file. The size of each .ldb entry
is 64 bytes. The first 32 bytes contain the computer name (such as JohnDoe).
The second 32 bytes contain the security name (such as Admin). The maximum
number of concurrent users that the Jet database engine supports is 255;
therefore, the .ldb file size is never larger than 16 kilobytes.
When a user closes a shared database, the user's entry is not removed from the
.ldb file. However, it may be overwritten when another user opens the database.
This means that you cannot use the .ldb file alone to determine who is
currently using the database.
The .ldb File Usage
The Jet database engine uses .ldb file information to prevent
users from writing data to pages that other users have locked and to determine
who has other pages locked. If the Jet database engine detects a lock conflict
with another user, it reads the .ldb file to get the computer and security name
of the user who has the file or record locked.
In most lock conflict
situations, you receive a generic "Write conflict" message that allows you to
save the record, copy it to the Clipboard, or drop the changes you made. In
some circumstances, however, you receive the following error message:
Couldn't lock table <table name>; currently in use
by user <security name> on computer <computer name>.
NOTE: The state of the information in the .ldb file has no bearing on
the state of the database. If an .ldb file becomes corrupted, everything in the
database should still work correctly. However, you may see scrambled text
instead of user names in any lock conflict messages.
REFERENCES
With Microsoft Visual Basic for Applications in Access
2000, you can output a list of users who are logged into a specific database.
For additional information about how to
do this and sample code, click the article number below to view the article in
the Microsoft Knowledge Base:
198755 ACC2000: Checking Who Logged into Database with Jet UserRoster