Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 ошибка transaction (Process ID 83) was deadlock...  [new]
Nelya_Kost
Member

Откуда:
Сообщений: 53
При выполнении запросов (какой именно запрос выдает ошибку установить не удалось) sql в программе выходит следущая ошибка:
"transaction (Process ID 83) was deadlock or {lock} resources with another process and has been chosen as the deadlock victim". Что значит эта ошибка? И как её устранить?
5 сен 11, 11:48    [11227211]     Ответить | Цитировать Сообщить модератору
 Re: ошибка transaction (Process ID 83) was deadlock...  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31983
Nelya_Kost
Что значит эта ошибка? И как её устранить?
Означает, что два процесса таким образом затребовали блокировки ресурсов, что их нельзя дождаться, поэтому один из процессов приходится убить.

Лечится либо одинаковой последовательностью блокирования ресурсов, либо повтором операции.
Nelya_Kost
какой именно запрос выдает ошибку установить не удалось
Установить можно с помощью профайлера или в приложении.
5 сен 11, 11:55    [11227295]     Ответить | Цитировать Сообщить модератору
 Re: ошибка transaction (Process ID 83) was deadlock...  [new]
SomewhereSomehow
Member

Откуда: Moscow
Сообщений: 2480
Блог
Nelya_Kost,

Ошибка значит то, что в ней написано. Если по русски, две транзакции взаимозаблокировались (первая ждала вторую, в то время как вторая первую) и, чтобы разрешить конфликт взаимолокировки, одна из них была выбрана в качестве жертвы и прибита. Что делать - имхо, лучше переписать логику так, чтобы запросы не выполнялись в такой последовательности.
5 сен 11, 11:55    [11227297]     Ответить | Цитировать Сообщить модератору
 Re: ошибка transaction (Process ID 83) was deadlock...  [new]
iljy
Member

Откуда:
Сообщений: 8711
Nelya_Kost,

она означает буквально то, что написано. Запускайте профайлер и вылавливайте граф дедлока. (ФАК - как получить граф дедлока)
5 сен 11, 11:56    [11227308]     Ответить | Цитировать Сообщить модератору
 Re: ошибка transaction (Process ID 83) was deadlock...  [new]
Nelya_Kost
Member

Откуда:
Сообщений: 53
значение ошибки понятно, а вот как её найти исправить... С этим сложнее. В профайлере я так понимаю, что можно просматривать текущие события в базе, а как найти ошибку если блокировка была месяц назад и больше пока не повторялась?
14 сен 11, 13:35    [11275200]     Ответить | Цитировать Сообщить модератору
 Re: ошибка transaction (Process ID 83) was deadlock...  [new]
а как еще
Guest
Nelya_Kost,

имитируйте те условия в которых она возникла
14 сен 11, 13:37    [11275219]     Ответить | Цитировать Сообщить модератору
 Re: ошибка transaction (Process ID 83) was deadlock...  [new]
Павел-П
Guest
Nelya_Kost,

База данных приложения это живой организм, за которым необходимо наблюдение - мониторинг.
Вероятность того, что Вы сможете разобраться с deadlock-ом имея на руках только ошибку - "process was killed due to deadlock" близка к нулю. Ибо у Вас на руках не будет никакой информации, только убитый номер процесса(это вам ни чем не поможет).

Поэтому Вам необходимо настраивать на рабочем окружении сбор информации (sql trace, Profiler). И уже затем соотносить логи вашего приложения с информацией в trace-файлах.

Работы будет много и она потребует много времени, если конечно у Вас не элементарная ситуация.
14 сен 11, 16:02    [11276569]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить