设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 18608|回复: 2
打印 上一主题 下一主题

[Access本身] (技巧)大型事务处理期间出现 超过文件共享锁计数 解决办法

[复制链接]

点击这里给我发消息

跳转到指定楼层
1#
发表于 2014-10-23 16:56:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有不少网友在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(十进制) ,修改数据为一个比较大的值  


本帖被以下淘专辑推荐:

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖1 订阅订阅

点击这里给我发消息

2#
发表于 2014-10-23 18:18:53 | 只看该作者
谢谢指导
回复

使用道具 举报

点击这里给我发消息

3#
发表于 2014-10-23 22:20:56 | 只看该作者
学习
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-12-1 17:28 , Processed in 0.092689 second(s), 31 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表