问题描述:
在复制数据粘贴到Access数据表时,或则将excell数据导入到Access数据库,操作大量数据记录时。
文件共享锁溢出 请增加MaxLocksperFile注册表项值
原因:
Access数据库,同时操作大量记录(9500条以上)时报错。
Microsoft JET Database Engine 错误 '80040e21'
处理办法1:在注册表修改MaxLocksPerFile每个文件的最大锁数
- 单击“开始”,然后单击“运行”。
- 键入 regedit,然后单击“确定”。
在注册表编辑器中,找到以下注册表项:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Jet 4.0
- 在注册表编辑器的右窗格中,双击“MaxLocksPerFile”。
- 在“编辑 DWORD 值”对话框中,单击“十进制”。
- 根据需要修改“数值数据”框中的值,然后单击“确定”。
如果安装的office是64位系统位置:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Jet\4.0\Engines\Jet 4.0
如果还是没有找到尝试以下两个路径:
For Access 2007 running on Windows 32 bit (x86) locate the following registry key:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\12.0\Access Connectivity Engine\Engines\ACE
For Access 2007 running on Windows 64 bit (x64) locate the following registry key:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office\12.0\Access Connectivity Engine\Engines\ACE
二、使用 SetOption 方法临时更改 MaxLocksPerFile
- 新建一个模块
在“立即窗口”中(可以按Ctrl+G显示立即窗口)运行该代码:
DAO.DBEngine.SetOption dbmaxlocksperfile ,15000
注意:该代码必须先引用 Microsoft DAO 3.6 对象库。
SetOption 方法临时覆盖每个文件的默认锁数。在设置MaxLocksPerFile 注册表项时设置每个文件的默认锁数。通过使用 SetOption 方法来设置新值。在关闭 DBEngine 对象之前该新值将一直有效。要使用第二种方法,请按照下列步骤操作:
要处理大型事务,请根据需要设置 MaxLocksPerFile 值,然后在会话中运行事务。
使用 SetOption 方法对 MaxLocksPerFile 设置所做的更改仅适用于当前会话。
注意:
MaxLocksPerFile 不能设置为无限大。如果您正在 Novell NetWare 服务器上工作,请不要更改该值,因为每个连接的最大服务器记录锁数是 10,000。
内容大部分来源:Access复制粘贴数据时提示MaxLocksPerFile的解决办法