Access在处理较多行数据时,会出现MaxLocksPerFile错误:“文件共享锁定数溢出,请增加MaxLocksPerFile注册表项值。”
MaxLocksPerFile 设置决定 Microsoft Jet 加在每个文件上的最大锁数。MaxLocksPerFile 的默认值为 9,500。
方法 1:设置 MaxLocksPerFile 的注册表项以增加每个文件的最大锁数
1.单击“开始”,然后单击“运行”。
2.键入 regedit,然后单击“确定”。
3.在注册表编辑器中,找到以下注册表项:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Jet 4.0
4.在注册表编辑器的右窗格中,双击“MaxLocksPerFile”。
5.在“编辑 DWORD 值”对话框中,单击“十进制”。
6.根据需要修改“数值数据”框中的值,然后单击“确定”。
注意:该方法可为所有使用 Microsoft Jet 数据库引擎 4.0 版的应用程序更改 Windows 注册表设置。
方法 2:使用 SetOption 方法临时更改 MaxLocksPerFile
注意:本文中的代码示例使用 Microsoft 数据访问对象。为使该代码正常运行,您必须引用 Microsoft DAO 3.6 对象库。为此,请在 Visual Basic 编辑器中单击“工具”菜单上的“引用”,并确保选中“Microsoft DAO 3.6 对象库”复选框。 SetOption 方法临时覆盖每个文件的默认锁数。在设置 MaxLocksPerFile 注册表项时设置每个文件的默认锁数。通过使用 SetOption 方法来设置新值。在关闭 DBEngine 对象之前该新值将一直有效。
要使用第二种方法,请按照下列步骤操作:
1. 打开 Microsoft Access。
2.打开一个数据库。在左窗格中,单击“模块”。
3.在右窗格中,右键单击“”,然后单击“设计视图”。注意:如果没有现有模块,请创建一个新模块。
4.在 “Microsoft Visual Basic –[(代码)]”窗口中,单击“视图”菜单中的“立即窗口”。
5. 在“立即窗口”中,输入以下代码:
DAO.DBEngine.SetOption dbmaxlocksperfile
,15000
6. 按 Enter 键运行此行代码。
注意:这会将 MaxLocksPerFile 值临时设置为 15,000。
要处理大型事务,请根据需要设置 MaxLocksPerFile 值,然后在会话中运行事务。
使用 SetOption 方法对 MaxLocksPerFile 设置所做的更改仅适用于当前会话。
方法3 放在代码中:
DAO.DBEngine.SetOption dbmaxlocksperfile ,15000