Решение проблем MS SQL Server с блокировками
Как я обычно отлавливаю и убиваю блокировки в SQL Server
Первое, что должно насторожить: простой запрос к одной таблице вдруг зависает, а к другим — летит мгновенно. Классический признак блокировки. Лично я с таким сталкиваюсь регулярно, особенно в горячих базах.
Проверяем, есть ли вообще заблокированные процессы. Вот мой любимый запрос:
SELECT cmd, *
FROM sys.sysprocesses
WHERE blocked > 0
Если запрос вернул строки — отлично, мы нашли виновника. Смотрим на колонку blocked. Там указан spID процесса, который захватил ресурсы и держит их мертвой хваткой.
Дальше просто — убиваем его командой:
KILL 54
Но важно: команда выполняется на сервере из-под администратора. Без прав не сработает — проверено не раз.
Пример из практики: как-то у нас висел отчет по продажам. Оказалось, коллега запустил тяжелый апдейт и ушел на обед. SPID 54 блокировал таблицу. Один KILL — и все снова работает.
Что это за запрос? Смотрим последний
Интересно же, какой именно запрос вызвал блокировку. Использую DBCC INPUTBUFFER — он показывает последнюю команду, выполненную в рамках конкретного SPID:
DBCC INPUTBUFFER(61)
GO
В скобках подставляете нужный SPID (тот самый blocked из предыдущего запроса).
Еще пример: после KILL я часто проверяю, что именно там было. Однажды нашли UPDATE без WHERE — классика. Пользователь случайно залил миллион строк.
Полезные ссылки
Что еще посмотреть по SQL Server
SQL Management Studio медленно работает, тормозит. Как решить проблему
Ошибки в SQL запросах и хранимых процедурах
Не запускается Configuration Manager
Решение ошибки Cannot resolve the collation conflict between
SQL. Получение null при конкатенации (объединении) строк
SQL. Проблема с доступом к таблице БД
Сколько памяти использует SQL Server
Высокое значение Resource Monitor в sp_who2 (загрузка CPU больше 50%)
Дополнительный заработок для разработчиков на T-SQL
- Шаг 1. Создать концепт проекта
- Шаг 2. Получить оценку бюджета (КП)
- Шаг 3. Заключить договор
- Шаг 4. Создать совместно техническое задание
- Шаг 5. Поэтапная реализация проекта