Ошибки · Решение
SQL Server ошибка 1222: что означает и как исправить
Запрос ждал блокировку дольше разрешённого LOCK_TIMEOUT.
Короткий ответ
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 и ресурсом блокировки.
Безопасные шаги
- Сократите длительность блокирующей транзакции.
- Исправьте порядок/индексацию, если запрос держит лишние locks.
- Меняйте LOCK_TIMEOUT только после устранения ненормальной блокировки.
Только безопасные обратимые действия. Опасные шаги — только по официальной инструкции и с пониманием рисков.
Когда нужен сервис
- Если SQL Server 1222 повторяется после проверки указанного объекта и контекста, приложите полный текст ошибки, query/plan и состояние транзакции DBA или владельцу приложения.
Похожие ошибки
- /errors/sql-server-error-102/
- /errors/sql-server-error-823/
- /errors/sql-server-error-824/
Что учитывать
Точная причина зависит от версии ПО/прошивки, полного текста ошибки и контекста. Официальная инструкция имеет приоритет.
Официальный источник
Расшифровка сверена с официальными страницами поддержки из источников ниже. Редакция N1RO не диагностировала ваш конкретный случай.