ACC97: Error: "There Isn't Enough Disk Space or Memory" (161329)
The information in this article applies to:
This article was previously published under Q161329 Advanced: Requires expert coding, interoperability, and multiuser skills.
SYMPTOMS
IMPORTANT: This article contains information about editing the registry.
Before you edit the registry, you should first make a backup copy of the
registry files (System.dat and User.dat). Both are hidden files in the
Windows folder.
When you perform an operation on a table, you may receive the following
error message if the operation creates a large number of page locks:
There isn't enough disk space or memory.
If you run an action query on a large table, you may receive the following error message:
There isn't enough disk space or memory to undo the data changes this
action query is about to make.
NOTE: Some sections this article assume that you are familiar with Visual Basic for Applications and with creating Microsoft Access applications using the programming tools provided with Microsoft Access. For more information about Visual Basic for Applications, please refer to the "Building Applications with Microsoft Access 97" manual.
CAUSE
The page locks required for the transaction exceed the MaxLocksPerFile
value, which defaults to 9500 locks. The MaxLocksPerFile setting is stored
in the Windows Registry.
RESOLUTION
There are several ways to work around this behavior:
- You can use Regedit.exe to edit the Windows Registry and change the MaxLocksPerFile value permanently.
- You can use the SetOption method of the DBEngine object to change the
MaxLocksPerFile value temporarily in code.
- If the error occurs when you run an action query, you can modify the
query and set its UseTransaction property to No.
Method 1: Changing MaxLocksPerFile in the Windows Registry
WARNING: Using Registry Editor incorrectly can cause serious problems that
may require you to reinstall Windows 95. Microsoft cannot guarantee that
problems resulting from the incorrect use of Registry Editor can be solved.
Use Registry Editor at your own risk.
For information about how to edit the registry, view the Changing Keys And
Values online Help topic in Registry Editor (Regedit.exe). Note that you
should make a backup copy of the registry files (System.dat and User.dat)
before you edit the registry.
Use Registry Editor to increase the MaxLocksPerFile value under the
following key:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\3.5\Engines\Jet 3.5
Note that this method changes the Windows Registry setting for all
applications that use the Microsoft Jet database engine version 3.5.
Method 2: Using SetOption to Change MaxLocksPerFile Temporarily
The SetOption method temporarily overrides values for the Microsoft Jet
database engine keys in the Windows Registry. The new value remains in
effect until you change it again, or until the DBEngine object is closed.
NOTE: Changes made to the MaxLocksPerFile setting using the SetOption
method will only be available through the current session of DAO
(Data Access Objects). Queries run through the Microsoft Access user
interface, will still use the settings within the registry.
The following code sample sets MaxLocksPerFile to 200,000 before executing
an update operation inside a transaction:
Sub LargeUpdate()
On Error GoTo LargeUpdate_Error
Dim db As Database, ws As Workspace
' Set MaxLocksPerFile.
DBEngine.SetOption dbMaxLocksPerFile, 200000
Set db = CurrentDb
Set ws = Workspaces(0)
' Perform the update.
ws.BeginTrans
db.Execute "UPDATE LargeTable SET Field1 = 'Updated Field'", _
dbFailOnError
ws.CommitTrans
db.Close
MsgBox "Done!"
Exit Sub
LargeUpdate_Error:
MsgBox Err & " " & Error
ws.Rollback
MsgBox "Operation Failed - Update Canceled"
Exit Sub
End Sub
Method 3: Setting the UseTransaction Property in an Action Query
If a stored action query causes the error, you can set its UseTransaction
property to No. Note that if you do this, you will not able to roll back
your changes if there is a problem or an error while the query is
executing:
- Open the query in Design view.
- On the View menu, click Properties.
- Click an empty space in the upper half of the query window to display
the Query Properties dialog box.
- Set the UseTransaction property to No.
- Save the query and close it.
STATUS
This behavior is by design.
REFERENCES
For more information about the SetOption method, search the Help Index for
"SetOption method."
For more information about customizing Windows Registry settings for
Microsoft Access 97, search the Help Index for "Registry."
For more information about the UseTransaction property, search the Help
Index for "UseTransaction property."
Modification Type: | Minor | Last Reviewed: | 10/11/2006 |
---|
Keywords: | kberrmsg kbnetwork kbprb kbProgramming KB161329 |
---|
|