Office中国论坛/Access中国论坛
标题:
(技巧)大型事务处理期间出现 超过文件共享锁计数 解决办法
[打印本页]
作者:
tmtony
时间:
2014-10-23 16:56
标题:
(技巧)大型事务处理期间出现 超过文件共享锁计数 解决办法
有不少网友在Office中国QQ群中遇到这样的问题,
在大型事务处理期间出现“File sharing lock count exceeded…”(超过文件共享锁计数…)错误
解决办法
使用注册表编辑器需要您自担风险。 要解决此问题,请增加每个文件的最大锁数。为此,请使用下列方法之一:
方法 1:设置 MaxLocksPerFile 的注册表项以增加每个文件的最大锁数
单击“开始”,然后单击“运行”。
键入
regedit
,然后单击“确定”。
在注册表编辑器中,找到以下注册表项:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Jet 4.0
在注册表编辑器的右窗格中,双击“MaxLocksPerFile”。
在“编辑 DWORD 值”对话框中,单击“十进制”。
根据需要修改“数值数据”框中的值,然后单击“确定”。
注意
:该方法可为所有使用 Microsoft Jet 数据库引擎 4.0 版的应用程序更改 Windows 注册表设置。
方法 2:使用 SetOption 方法临时更改 MaxLocksPerFile
注意
:本文中的代码示例使用 Microsoft 数据访问对象。为使该代码正常运行,您必须引用 Microsoft DAO 3.6 对象库。为此,请在 Visual Basic 编辑器中单击“工具”菜单上的“引用”,并确保选中“Microsoft DAO 3.6 对象库”复选框。
SetOption
方法临时覆盖每个文件的默认锁数。在设置
MaxLocksPerFile
注册表项时设置每个文件的默认锁数。通过使用
SetOption
方法来设置新值。在关闭
DBEngine
对象之前该新值将一直有效。要使用第二种方法,请按照下列步骤操作:
打开 Microsoft Access。
打开一个数据库。在左窗格中,单击“模块”。
在右窗格中,右键单击“<
模块名
>”,然后单击“设计视图”。
注意
:如果没有现有模块,请创建一个新模块。
在 “Microsoft Visual Basic -<
数据库名
>-[<
模块名
>(代码)]”窗口中,单击“视图”菜单中的“立即窗口”。
在“立即窗口”中,输入以下代码:
DAO.DBEngine.SetOption dbmaxlocksperfile ,15000
按 Enter 键运行此行代码。
注意
:这会将
MaxLocksPerFile
值临时设置为 15,000。
要处理大型事务,请根据需要设置
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(十进制) ,修改数据为一个比较大的值
作者:
好运牛
时间:
2014-10-23 18:18
谢谢指导
作者:
t小宝
时间:
2014-10-23 22:20
学习
欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/)
Powered by Discuz! X3.3