ACC: Introduction to .LDB Files (1.x/2.0) (109957)



The information in this article applies to:

  • Microsoft Access 1.0
  • Microsoft Access 1.1
  • Microsoft Access 2.0

This article was previously published under Q109957
Novice: Requires knowledge of the user interface on single-user computers.

SUMMARY

Q: What is an .LDB file and what is it used for?

A: The .LDB file maintains lock information about a database, and
   each user who opens the database has an entry in it. The .LDB file
   contains the computer and user names of all users currently
   accessing a database in a multiuser (network) environment. No
   other information is read from or written to the .LDB file.

   Microsoft Access uses this information to tell which records are
   locked in a database, and who has them locked, to prevent possible
   file contention errors and database corruption by multiple users.

   However, the .LDB file does not give Microsoft Access information
   about who has a database opened exclusively, because this is handled by
   SHARE.EXE (or VSHARE.386 in Windows 3.1). Those programs do not
   return information to Microsoft Access about who has the database
   open.

Q: Can I find out the structure of the .LDB file?

A: The format of the .LDB file is not published and is subject to
   change or elimination in future releases of Microsoft Access.
   Therefore, code written to manipulate it or to read its current
   format may not work correctly if the .LDB file is eliminated or its
   format is changed in a future release.

Q: Can a user or programmer gain access to the information in the .LDB
   file?

A: No. The information in the .LDB file is only used internally by
   Microsoft Access and is not designed to be used by users or programmers.

Q: Where and when is an .LDB file created?

A: An .LDB file is created when you open a database. The .LDB file must
   reside in the same directory as that database. If an .LDB file isn't
   present and Microsoft Access requires it, Microsoft Access attempts
   to create one in the same directory as the database.

   Normally, the .LDB file must be in a directory where the user has
   read-write permissions. However, it is possible to open a database
   in a directory or device where a user has read-only permissions.
   To do this, select both the Read Only and the Exclusive check boxes
   in the Open Database dialog box. The Open Database dialog box can
   be found by selecting Open Database from the File menu. The
   combination of read-only and exclusive means that users will not be
   updating any database information, so record-locking isn't
   required. Because record-locking isn't required, Microsoft Access
   does not attempt to open or create an .LDB file.

   This technique also works with directories where the user has read-
   write permissions and will improve performance if database updating
   isn't required.

Q: If you move a database, do you also need to move its .LDB file?

A: It isn't necessary to move the .LDB file, because Microsoft Access
   attempts to re-create the .LDB file if it is not present.

   A potential problem can occur if the database is placed in a
   directory where some users have directory read-only permissions and
   other users have directory read-write permissions.

   When read-only users open a database, no information is written
   to the .LDB file, because those users are not allowed to write any
   information to the database. When read-write users open a database,
   their names and computer information are written to the .LDB file.

   If both of these users (read-only and read-write) open a database
   and read the same record, a file conflict occurs if the read-write
   user attempts to update the record, because an update action would
   conflict with the read-only user. When a file conflict occurs,
   Microsoft Access pulls data from the .LDB file for what it thinks
   is the read-only user and uses this data in the file conflict error
   message given to the read-write user. However, because the read-only
   user's name and computer weren't written to the .LDB file, and because
   previously used .LDB files contain the names of previous read-write
   users, Microsoft Access reads old, outdated user information from
   the .LDB file and subsequently uses it in the error message instead
   of valid user information.

   To protect against this problem, the database should first be
   opened and then closed by one of the read-write users before any read-
   only users open the database. This creates the .LDB file for that
   database.

Q: Can I erase the .LDB file?

A: You can erase the .LDB file if no one currently has it open.
   However, unless the database is opened as read-only and exclusive,
   Microsoft Access will re-create the file the next time the database
   is opened.

   In fact, if you receive strange user names reported (such as old user
   names or garbage) when a lock conflict occurs, your .LDB file is
   most likely damaged. If you suspect this, it is best to erase your
   old .LDB file and let Microsoft Access automatically create a new
   one for you.

Q: What is the maximum size the .LDB file can be?

A: The maximum size is 16K, with each active user taking 64 bytes.

Q: When is information written to the .LDB file?

A: Information is only written to the .LDB file once, when a user
   opens a database and the .LDB file is created, and active user
   information is written to it. After that point, Microsoft Access
   only locks portions of the .LDB file and does not read from it or
   write to it.

Q: How does Microsoft Access use the information in the .LDB files?

A: Microsoft Access uses .LDB file information to determine who has
   which files (or records in a file) locked. If Access detects a lock
   conflict with another user, it reads the .LDB file to get the
   computer and user name of the user who has the file or record
   locked. However, the state of the information in the .LDB file has
   no bearing on the state of the database. If the .LDB file is
   completely corrupted, everything in the database will still work
   correctly (although user names reported in lock conflicts might
   look strange).

   In most lock conflict situations, you get a generic "Write conflict"
   error 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
      <user name> on computer <computer name>.

Q: How can I find out which users are accessing my database?

A: Microsoft Access does not provide direct functionality to identify
   users accessing a database. The level and type of functionality in
   this area differs and depends largely on the operating system and
   network software.

   For example, Microsoft Lan Manager provides an Audit API function
   set that can be used to create and manage real-time audit files.
   These audit files keep track of server operations and the users who
   perform them. These API functions can be manipulated through Access
   Basic to provide user information.

   Some operating systems (such as Windows for Workgroups, which comes
   with a tool called NetWatch) give you the ability to identify
   users logged onto a shared network directory. However, NetWatch
   cannot indentify users currently accessing a given file.
				

REFERENCES

Microsoft Lan Manager "A Programmer's Guide," version 2.0, Chapter 8, "Information APIs," pages 234-236

For more information about .LDB files, search for "LDB files" then "Locking Information Files" using the Microsoft Access version 2.0 Help menu.

Modification Type:MinorLast Reviewed:1/26/2005
Keywords:kbinfo kbusage KB109957