有不少网友在Office中国QQ群中遇到这样的问题,在大型事务处理期间出现“File sharing lock count exceeded…”(超过文件共享锁计数…)错误
解决办法
使用注册表编辑器需要您自担风险。 要解决此问题,请增加每个文件的最大锁数。为此,请使用下列方法之一:
方法 1:设置 MaxLocksPerFile 的注册表项以增加每个文件的最大锁数
注意:该方法可为所有使用 Microsoft Jet 数据库引擎 4.0 版的应用程序更改 Windows 注册表设置。
方法 2:使用 SetOption 方法临时更改 MaxLocksPerFile注意:本文中的代码示例使用 Microsoft 数据访问对象。为使该代码正常运行,您必须引用 Microsoft DAO 3.6 对象库。为此,请在 Visual Basic 编辑器中单击“工具”菜单上的“引用”,并确保选中“Microsoft DAO 3.6 对象库”复选框。 SetOption 方法临时覆盖每个文件的默认锁数。在设置MaxLocksPerFile 注册表项时设置每个文件的默认锁数。通过使用 SetOption 方法来设置新值。在关闭 DBEngine 对象之前该新值将一直有效。要使用第二种方法,请按照下列步骤操作:
要处理大型事务,请根据需要设置 MaxLocksPerFile 值,然后在会话中运行事务。
使用 SetOption 方法对 MaxLocksPerFile 设置所做的更改仅适用于当前会话。
MaxLocksPerFile 设置决定 Microsoft Jet 加在每个文件上的最大锁数。MaxLocksPerFile 的默认值为 9,500。但是,如果您正在 Novell NetWare 服务器上工作,请不要更改该值,因为每个连接的最大服务器记录锁数是 10,000。
但注意 32位与64位系统的注册表位置是不同的.
针对 Access 2000, Access 2002, Access 2003 运行在Windows 32 bit (x86)
找到这个注册项:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Jet 4.0
针对 Access 2000, Access 2002, Access 2003 运行在Windows 64 bit (x64)
找到这个注册项:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Jet\4.0\Engines\Jet 4.0
针对 Access 2007 运行在Windows 32 bit (x86)
找到这个注册项:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\12.0\Access Connectivity Engine\Engines\ACE
针对 Access 2007 运行在Windows 64 bit (x64)
找到这个注册项:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office\12.0\Access Connectivity Engine\Engines\ACE
针对 Access 2010 运行在Windows 32 bit (x86)
找到这个注册项:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\14.0\Access Connectivity Engine\Engines\ACE
针对 Access 2010 运行在Windows 64 bit (x64)
找到这个注册项:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office\14.0\Access Connectivity Engine\Engines\ACE
—
在右边面板, 双击 MaxLocksPerFile 项
在修改 DWORD 值窗口, 选择 Decimal(十进制) ,修改数据为一个比较大的值