Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

MSSQL_LOCKS_LIMIT_EXCEEDED 1С:Предприятие и СУБД

Ошибка 1С «Превышено максимальное число блокировок»: настройка MS SQL

Обновлено: 26.08.2026 · Официальная документация ↗

Во время группового перепроведения документов, закрытия месяца или выгрузки тяжелого отчета в 1С возникает аварийное прерывание:

Ошибка СУБД: Microsoft OLE DB Provider for SQL Server: Превышено максимальное число блокировок в транзакции.
Error Code 1204 / 1222
  • Документы не проводятся, транзакция сбрасывается с ошибкой блокировки.
  • Сервер баз данных MS SQL жестко ограничен по количеству дескрипторов блокировок (locks).
  • Конфликт параллельных транзакций в устаревшем режиме автоматических блокировок.

Шаг 1. Проверка и сброс лимита блокировок в MS SQL Server Management Studio

  1. Запустите SQL Server Management Studio (SSMS) → подключитесь к экземпляру SQL.
  2. Кликните правой кнопкой мыши по имени сервера (верхний корень дерева) → Properties (Свойства).
  3. Перейдите на вкладку Advanced (Дополнительно).
  4. Найдите параметр Locks (Блокировки): по умолчанию значение должно быть равно 0 (что означает динамическое автоматическое выделение памяти под блокировки по мере необходимости).
  5. Если там установлено фиксированное число (например, 10000) — сотрите его и установите 0.
  6. Нажмите OK.

Шаг 2. Выполнение SQL-скрипта для динамического управления блокировками

Откройте окно запроса (New Query) и примените настройки ядра СУБД:

EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
GO
EXEC sp_configure 'locks', 0;
RECONFIGURE;
GO

Шаг 3. Перевод конфигурации 1С на Управляемый режим блокировок

Если ошибка повторяется регулярно в старых конфигурациях (УПП 1.3, УТ 10.3), необходимо в Конфигураторе 1С открыть свойства корня конфигурации и перевести параметр Режим управления блокировкой данных в положение Управляемый (или Автоматический и Управляемый).

💡 Практика специалистов: Если база работает в режиме автоматических блокировок на MS SQL, эскалация блокировок до уровня всей таблицы (Lock Escalation) — главная причина зависания всей бухгалтерии при проведении одного документа.

Частые вопросы (FAQ)

Почему MS SQL выдает эту ошибку, если памяти на сервере много?

В устаревшем автоматическом режиме блокировок 1С блокирует целые диапазоны таблиц на уровне СУБД. При проведении тысяч документов за раз количество мелких блокировок превышает системный порог безопасности SQL Server.

Нужно ли перезагружать службу MS SQL Server после изменения параметра locks=0?

Нет, изменение параметра locks через sp_configure с командой RECONFIGURE применяется на лету без остановки сервера.

Поможет ли увеличение оперативной памяти серверу?

Да, если память SQL Server была искусственно ограничена в свойствах (Max Server Memory), увеличение лимита позволит движку выделять больше структур памяти под блокировки.

Что делать бухгалтеру, если ошибка вылетает при закрытии месяца?

Выполняйте перепроведение документов небольшими периодами (по декадам или месяцам), а не за весь год сразу, чтобы уменьшить объем одной неделимой транзакции.

Полезные материалы
Рекомендуем