Setting the Maximum Number of Locks

Microsoft Jet places locks on the locking information file (.ldb file) while modifying data. Many locks can accumulate when data is being manipulated inside a transaction. The accumulation of locks can cause problems with NetWare servers because they can handle only up to 10,000 locks per connection. This limit ensures good performance on a NetWare server, but can prevent Microsoft Jet from completing large transactions. When users encounter this, they experience long delays before Microsoft Jet returns an error message stating that the transaction needs to be rolled back. Prior to Microsoft Jet 3.5, the only workaround was to break DAO transactions that affected many records into smaller transactions, and to replace SQL DML statements with the equivalent DAO looping routines that perform smaller transactions.

The MaxLocksPerFile setting determines the maximum number of locks that Microsoft Jet places against a file. The default setting is 9,500 locks. If the number of locks required to perform a transaction exceeds the MaxLocksPerFile setting, the transaction commits (writes) the data that has locks associated with it, frees the locks, and then continues processing the transaction. If the maximum number of locks a server can handle is less than the MaxLocksPerFile setting, the server returns an error message or appears to hang when performing a large transaction. If this occurs, you should decrease the MaxLocksPerFile setting. A Novell server can be configured to perform a maximum of 10,000 locks per connection. However, you should note that a Novell server connection can include more than one database, so it’s possible to exceed the maximum number of available locks if you are using more than one database at a time.