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

Откуда: Россия, Ростовская область, г. Таганрог
Сообщений: 1295
Установил флаги трасировки, что бы deadlock попадал в log.
Не могу протестировать, запускаю транзакцию без commit, а потом любые операции над изменяемой таблицой долго висят, даже тайм аут не срабатывает.

Я тестирую с SSMS, а проблема у меня была в том что джобы (запущенные агентом) падали с deadlock-ом, причём крайне часто выполняющийся джоб упал два раза на той неделе впервые за большой промежуток времени.

Вообщем хочу убедится что данные попадают в лог. Как это сделать?!

Заранее спасибо.
17 авг 09, 16:48    [7547659]     Ответить | Цитировать Сообщить модератору
 Re: Как вызвать deadlock  [new]
Naroto
Member

Откуда: куда и зачем
Сообщений: 3604
NIIIK,

Наверное Вы путаете blocking и deadlocking понятия.

вот тут симулятор deadlock

Naroto думает что это то что Вам надо.
17 авг 09, 17:05    [7547798]     Ответить | Цитировать Сообщить модератору
 Re: Как вызвать deadlock  [new]
heldir
Member

Откуда: Запорожье->Киев->Montreal
Сообщений: 757
CREATE TABLE [dbo].[ttt](
	[id] [int] NULL,
	[txt] [nchar](100) NULL
);

insert into ttt values (1,'one');
insert into ttt values (2,'two');

CREATE UNIQUE NONCLUSTERED INDEX [ttt_ind] ON [dbo].[ttt] 
(
	[id] ASC
);

В сессии 1:

begin transaction
update ttt set txt = 'new' where id = 1 

В сессии 2:

begin transaction
update ttt set txt = 'new' where id = 2 

В сессии1:

update ttt set txt = 'new' where id = 2

В сессии 2:

update ttt set txt = 'new' where id = 1

Transaction (Process ID 52) was deadlocked on lock resources
with another process and has been chosen as the deadlock victim. Rerun the transaction.
17 авг 09, 17:09    [7547831]     Ответить | Цитировать Сообщить модератору
 Re: Как вызвать deadlock  [new]
NIIIK
Member

Откуда: Россия, Ростовская область, г. Таганрог
Сообщений: 1295
Naroto,

Не, не путаю, ошибка была в логах джоба такая

(Process ID 72) was deadlocked on lock resources with another process
and has been chosen as the deadlock victim. Rerun the transaction.
[SQLSTATE 40001] (Error 1205).  The step failed.

Вот и хочу узнать кто кого )

Но на девелоперском сервере протестить не получается. Ваш пример работает по тому же прниципц "висящей транзакции" я так же не могу дождатсья чтобы хоть одни попался как "жертва блокировки" :)
17 авг 09, 17:15    [7547875]     Ответить | Цитировать Сообщить модератору
 Re: Как вызвать deadlock  [new]
NIIIK
Member

Откуда: Россия, Ростовская область, г. Таганрог
Сообщений: 1295
heldir,

спасибо! оно. Фишка в индексе.
17 авг 09, 17:17    [7547886]     Ответить | Цитировать Сообщить модератору
 Re: Как вызвать deadlock  [new]
NIIIK
Member

Откуда: Россия, Ростовская область, г. Таганрог
Сообщений: 1295
В продолжении темы

Почему

DBCC TRACEON(1222)
--DBCC TRACEON(1204)
DBCC TRACEON(3604)
DBCC TRACEON(3605)

Не воспринимается и лог не появляетс

А

-T1222 -T3604 -T3605

срабатывает, но не сохраняется в параметрах запуска службы, т.е. при перезапуске этих команд нет.

Первое мне надо что бы на продакшен сервере сработало без перезапуска
Второе мне надо для того чтобы если всё же произошёл перезапуск, то у меня были бы логи.

Заранее спасибо!
17 авг 09, 17:52    [7548095]     Ответить | Цитировать Сообщить модератору
 Re: Как вызвать deadlock  [new]
Glory
Member

Откуда:
Сообщений: 104760
NIIIK

А

-T1222 -T3604 -T3605

срабатывает, но не сохраняется в параметрах запуска службы, т.е. при перезапуске этих команд нет.

В параметрах службы ???
Ключи запуска задаются в свойствах сервера в соответствующей закладке
17 авг 09, 18:07    [7548191]     Ответить | Цитировать Сообщить модератору
 Re: Как вызвать deadlock  [new]
NIIIK
Member

Откуда: Россия, Ростовская область, г. Таганрог
Сообщений: 1295
Glory,

Да, спасибо, нашёл разницу между services.msc, который всегда использовал (не только для служб МС СКЛ) и пунктом "In SQL Server Configuration Manager, click SQL Server Services."

так даже бы внимания не обрщал, потому что ключи прохавываются.

Как на счёт проблемы DBCC TRACEON(1222) .... ? Где там вся фишка?
17 авг 09, 20:59    [7548591]     Ответить | Цитировать Сообщить модератору
 Re: Как вызвать deadlock  [new]
NIIIK
Member

Откуда: Россия, Ростовская область, г. Таганрог
Сообщений: 1295
Glory,

когда устанавливаю параметры через эту штуку, то выдаётся ошибка.

К сообщению приложен файл. Размер - 0Kb
17 авг 09, 21:03    [7548597]     Ответить | Цитировать Сообщить модератору
 Re: Как вызвать deadlock  [new]
NIIIK
Member

Откуда: Россия, Ростовская область, г. Таганрог
Сообщений: 1295
Glory,
понял, параметры через точку с запятой.
17 авг 09, 21:11    [7548616]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить