n1ro°
RU

Ошибки · Решение

SQL Server ошибка 1222: что означает и как исправить

Запрос ждал блокировку дольше разрешённого LOCK_TIMEOUT.

Редакция N1RO · Проверено

Короткий ответ

SQL Server error 1222 — Lock request time out period exceeded. Сообщение Database Engine нужно разбирать вместе с объектом, statement и контекстом подключения/транзакции.

Что означает ошибка

Запрос ждал блокировку дольше разрешённого LOCK_TIMEOUT.

Возможные причины

  • Другая транзакция долго удерживает несовместимую блокировку.
  • Транзакция выполняет слишком много работы до COMMIT.
  • LOCK_TIMEOUT установлен короче нормального времени конкуренции.

Что проверить

  • Найдите blocker через sys.dm_os_waiting_tasks и sys.dm_tran_locks.
  • Проверьте open transactions и их длительность.
  • Сопоставьте timeout с конкретным statement и ресурсом блокировки.

Безопасные шаги

  1. Сократите длительность блокирующей транзакции.
  2. Исправьте порядок/индексацию, если запрос держит лишние locks.
  3. Меняйте LOCK_TIMEOUT только после устранения ненормальной блокировки.

Только безопасные обратимые действия. Опасные шаги — только по официальной инструкции и с пониманием рисков.

Когда нужен сервис

  • Если SQL Server 1222 повторяется после проверки указанного объекта и контекста, приложите полный текст ошибки, query/plan и состояние транзакции DBA или владельцу приложения.

Похожие ошибки

  • /errors/sql-server-error-102/
  • /errors/sql-server-error-823/
  • /errors/sql-server-error-824/

Что учитывать

Точная причина зависит от версии ПО/прошивки, полного текста ошибки и контекста. Официальная инструкция имеет приоритет.

Официальный источник

Расшифровка сверена с официальными страницами поддержки из источников ниже. Редакция N1RO не диагностировала ваш конкретный случай.