Access复制粘贴数据时提示MaxLocksPerFile的解决办法

2017-11-18 16:25:00
黄善超
原创
211

在复制数据粘贴到Access数据表时,有时会提示“文件共享锁定数溢出。请增加MaxLocksPerFile注册表项值。”的错误提示


这是因为粘贴的数据过多导致,MaxLocksPerFile 设置决定 Microsoft Jet 加在每个文件上的最大锁数。MaxLocksPerFile 的默认值为 9500


解决办法:

一、在注册表修改MaxLocksPerFile每个文件的最大锁数

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


二、使用 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。

    分享