При обработке большого числа транзакций появляется сообщение об ошибке "Превышено число блокировок файлов общего доступа…"

Переводы статьи Переводы статьи
Код статьи: 815281 - Vizualiza?i produsele pentru care se aplic? acest articol.
Важно! Эта статья содержит сведения об изменении реестра. Перед внесением изменений в системный реестр рекомендуется создать его резервную копию. Убедитесь в том, что знаете, как восстановить реестр в случае возникновения проблемы. Дополнительные сведения об архивировании, восстановлении и изменении реестра см. в следующей статье базы знаний Майкрософт:
322756 Создание резервной копии, редактирование и восстановление реестра Windows XP и Windows Server 2003
Развернуть все | Свернуть все

В этой статье

Проблема

Когда один или несколько пользователей обрабатывают большое число транзакций в многопользовательской среде, обработка может завершиться ошибкой, при этом может быть выведено следующее сообщение об ошибке:
Превышено число блокировок файлов общего доступа. Увеличьте значение параметра реестра MaxLocksPerFile.

Причина

Данная ошибка возникает, если число блокировок, необходимых для выполнения транзакции, превышает максимально возможное число блокировок на файл.

Временное решение

Внимание! При неправильном изменении реестра с помощью редактора реестра или иным способом могут возникнуть серьезные проблемы. Эти проблемы могут привести к необходимости переустановки операционной системы. Корпорация Майкрософт не гарантирует, что эти проблемы могут быть решены. Ответственность за изменение реестра несет пользователь.

Чтобы решить эту проблему обходным способом, увеличьте максимально возможное число блокировок на файл. Для этого воспользуйтесь одним из описанных ниже способов.

Способ 1. Увеличение максимально возможного числа блокировок на файл с помощью параметра реестра MaxLocksPerFile

  1. Нажмите кнопку Пуск и выберите в меню команду Выполнить.
  2. Введите команду regedit и нажмите кнопку ОК.
  3. Выполните одно из указанных ниже действий.
    • Если используется Microsoft Access 2000, Microsoft Access 2002 или Microsoft Office Access 2003, найдите в редакторе реестра следующий раздел:
      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Jet 4.0
    • Если используется Microsoft Office Access 2007, найдите в редакторе реестра следующий раздел:
      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\12.0\Access Connectivity Engine\Engines\ACE\MaxLocksPerFile
  4. В правой области окна редактора реестра дважды щелкните параметр MaxLocksPerFile.
  5. В диалоговом окне Изменение параметра DWORD выберите пункт Десятичная.
  6. Измените поле Значение в соответствии с требованиями и нажмите кнопку ОК.
Примечание. Этот способ изменяет параметр реестра Windows для всех приложений, использующих ядро СУБД Microsoft Jet версии 4.0.

Способ 2. Временное изменение параметра MaxLocksPerFile с помощью метода SetOption

Примечание. В коде примеров, приведенных в этой статье, используются объекты данных Microsoft ActiveX. Чтобы этот код работал правильно, необходимо добавить ссылку на библиотеку Microsoft ActiveX Data Objects 2.x (где 2.x — 2.1 или более поздняя версия). Для этого в редакторе Visual Basic в меню Tools (сервис) выберите пункт References (ссылки) и убедитесь в том, что установлен флажок Microsoft ActiveX Data Objects 2.x Library (библиотека объектов данных ActiveX 2.x).

Метод SetOption временно переопределяет число блокировок на файл, заданное по умолчанию. Число блокировок на файл по умолчанию задается при настройке параметра реестра MaxLocksPerFile . Новое значение задается с помощью метода SetOption. Новое значение действительно до закрытия объекта DBEngine. Чтобы воспользоваться способом 2, выполните действия, описанные ниже.
  1. Откройте Microsoft Access.
  2. Откройте базу данных и нажмите клавиши Alt+F11, чтобы запустить редактор Visual Basic.
  3. В окне Microsoft Visual Basic -<имя базы данных>-[<имя модуля> (код)] выберите в меню View (просмотр) пункт Immediate Window (область проверки).
  4. В области проверки введите следующий код:
    DAO.DBEngine.SetOption dbmaxlocksperfile
    				,15000
  5. Нажмите ВВОД, чтобы выполнить эту строку кода.

    Примечание. В результате параметру MaxLocksPerFile временно будет присвоено значение 15 000.
Для обработки крупных транзакций задайте значение MaxLocksPerFile в соответствии со своими требованиями и обработайте транзакции в сеансе.

Изменения параметра MaxLocksPerFile с помощью метода SetOption действуют только для текущего сеанса.

Дополнительная информация

Параметр MaxLocksPerFile определяет максимальное число блокировок, которые Microsoft Jet может применить к файлу. По умолчанию параметр MaxLocksPerFile имеет значение 9500. Не изменяйте его, если работаете с сервером Novell NetWare, потому что максимальное число блокировок серверных записей на подключение составляет 10 000. Дополнительные сведения см. в следующей статье базы знаний Майкрософт:
305995 PRB: При подключении к базе данных Jet на сервере Novell появляется сообщение об ошибке "3050 Блокировка файла невозможна" (Эта ссылка может указывать на содержимое полностью или частично на английском языке)

Ссылки

Дополнительные сведения см. в следующих статьях базы знаний Майкрософт:
198633 При синхронизации двух реплик в Access 2000 появляется сообщение об ошибке "Превышено число блокировок файлов общего доступа" (Эта ссылка может указывать на содержимое полностью или частично на английском языке)
209940 При выполнении операции над таблицей в Access 2000 появляется сообщение об ошибке "Не хватает места на диске или памяти" (Эта ссылка может указывать на содержимое полностью или частично на английском языке)

Свойства

Код статьи: 815281 - Последний отзыв: 28 ноября 2007 г. - Revision: 6.1
Информация в данной статье относится к следующим продуктам.
  • Microsoft Office Access 2007
  • Microsoft Office Access 2003
  • Microsoft Access 2002 Standard Edition
  • Microsoft Access 2000 Standard Edition
Ключевые слова: 
kberrmsg kbregistry kbprb KB815281

Отправить отзыв

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com