Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Awaiting Command и @@Trancount>0  [new]
sky
Member

Откуда:
Сообщений: 281
Коллеги, помогите разобраться с такой проблемой.
Периодически на сервере возникают блокировки, которые парализуют работу пользователей. Вся необходимая работа по оптимизации запросов проведена - очень долгих нет. Все select выполняются с хинтами NOLOCK или при уровне изоляции READ UNCOMMITED.
При помощи запросов и программы SQLBlocks выяснил, что "вешают" всех запросы, у которых статус awaiting command, но количество открытых транзакций не равно 0. Ясно, что такого быть не должно. К сожалению, я могу увидеть только последнюю выполненную блокирующим SPID команду (это так?), но зачастую, команда совершенно безобидная и не может блокировать ресурсов, то есть "намусорил" кто-то другой.
Почитал, что такое может быть, когда используются вложенные транзакции (здесь они имеют место быть), какая-то внутренняя отваливается без rollback а XACT_ABORT не установлен. Как отловить цепочку запросов, которая приводит к такому результату и как на тестовых данных спровоцировать такую ситуацию.
Предполагаю, что отловить можно Profiler-ом, но блокировки возникают не постоянно, а держать его включенным постоянно не хочется, поэтому думаю каким-то образом спровоцировать возникновение такой блокировки и примерить это все к подозрительному месту.
28 май 13, 14:38    [14359582]     Ответить | Цитировать Сообщить модератору
 Re: Awaiting Command и @@Trancount>0  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37143
На каком ресурсе ждут "парализованные" пользователи?
28 май 13, 14:39    [14359594]     Ответить | Цитировать Сообщить модератору
 Re: Awaiting Command и @@Trancount>0  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37143
sky
Почитал, что такое может быть, когда используются вложенные транзакции (здесь они имеют место быть), какая-то внутренняя отваливается без rollback а XACT_ABORT не установлен. Как отловить цепочку запросов, которая приводит к такому результату и как на тестовых данных спровоцировать такую ситуацию.
598914
28 май 13, 14:41    [14359602]     Ответить | Цитировать Сообщить модератору
 Re: Awaiting Command и @@Trancount>0  [new]
sky
Member

Откуда:
Сообщений: 281
Гавриленко Сергей Алексеевич,
Блокированные процессы висят с типом блокировки LCK_M_S (по ключу)
28 май 13, 14:51    [14359670]     Ответить | Цитировать Сообщить модератору
 Re: Awaiting Command и @@Trancount>0  [new]
sky
Member

Откуда:
Сообщений: 281
спасибо, почитаю, будем вместе с разработчиками клиентской части разбираться
28 май 13, 14:52    [14359675]     Ответить | Цитировать Сообщить модератору
 Re: Awaiting Command и @@Trancount>0  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37143
sky
Гавриленко Сергей Алексеевич,
Блокированные процессы висят с типом блокировки LCK_M_S (по ключу)
Висят на шаред локе, что противоречит вашему утверждению "все select выполняются с хинтами NOLOCK или при уровне изоляции READ UNCOMMITED. ".
28 май 13, 14:54    [14359701]     Ответить | Цитировать Сообщить модератору
 Re: Awaiting Command и @@Trancount>0  [new]
sky
Member

Откуда:
Сообщений: 281
Значит будем искать, где оное пропущено, пока не все подозрительные места пересмотрел. Спасибо!
28 май 13, 15:02    [14359768]     Ответить | Цитировать Сообщить модератору
 Re: Awaiting Command и @@Trancount>0  [new]
ambarka_max
Member

Откуда: Россия
Сообщений: 517
Фишка в том, что после этого
Гавриленко Сергей Алексеевич
598914

приложение должно осознавать проблему и сбрасывать транзакцию, а не работать в ней далее. Иначе появятся такие летучие голландцы, что замучаешься потом что-то доказывать.
28 май 13, 17:46    [14361026]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить