access导入Excel时提示 文件共享锁溢出 请增加MaxLocksperFile注册表项值的解决办法

2019-08-28 16:53:00
tmtony8
原创
282
在access中,我们往往需要导入Excel的数据。无论是复制粘贴,通过access自带功能的导入,又或者是用代码导入时
如果操作数据量较大时。会提示错误

文件共享锁溢出 请增加MaxLocksperFile注册表项值





这是因为Access数据库,默认最多同时操作大量记录(9500条)。超过即会提示错误



处理办法一:

在注册表上直接修改MaxLocksPerFile每个文件的最大锁数

1. 单击“开始”,然后单击“运行”。
2. 键入 regedit,然后单击“确定”。
3. 在注册表编辑器中,找到以下注册表项:
4. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Jet 4.0
5. 在注册表编辑器的右窗格中,双击“MaxLocksPerFile”。
6. 在“编辑 DWORD 值”对话框中,单击“十进制”。
7. 根据需要修改“数值数据”框中的值,然后单击“确定”。


注意:
如果安装的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


1. 新建一个模块
2. 在“立即窗口”中(可以按Ctrl+G显示立即窗口)运行该代码:
DAO.DBEngine.SetOption dbmaxlocksperfile ,15000


注意:该代码必须先引用 Microsoft DAO 3.6 对象库。


SetOption 方法临时覆盖每个文件的默认锁数。在设置MaxLocksPerFile 注册表项时设置每个文件的默认锁数。通过使用 SetOption 方法来设置新值。在关闭 DBEngine 对象之前该新值将一直有效。要使用第二种方法,请按照下列步骤操作:

要处理大型事务,请根据需要设置 MaxLocksPerFile 值,然后在会话中运行事务。
使用 SetOption 方法对 MaxLocksPerFile 设置所做的更改仅适用于当前会话。

注意:
MaxLocksPerFile 不能设置为无限大。如果您正在 Novell NetWare 服务器上工作,请不要更改该值,因为每个连接的最大服务器记录锁数是 10,000。
    分享