Подробная информация о deadlock

Евгешка
Дата: 16.10.2003 17:49:33
Как получить подробную информацию о процессах в дедлоке?
Для каждого соединения устанавливаю dbcc traceon (1204), но сообщение об ошибке все равно короткое:
Transaction (Process ID 54) was deadlocked on {lock} resources with another process and has been chosen as the deadlock victim. Rerun the transaction.
GreenSunrise
Дата: 16.10.2003 17:59:47
Отслеживание deadlock'ов вообще не так делается.
BOL->Contents->Troubleshooting->Server and Database Troubleshooting->Troubleshooting Deadlocks
BOL->Contents->Transact-SQL Reference->Trace Flags

Вроде как профайлером тоже можно отследить, но я обычно для этого запускаю sql сервер из командной строки с определенным ключом и выводом в файл. До сих пор помогало...
sqlservr –T1204 > out.txt
Евгешка
Дата: 16.10.2003 18:03:08
Спасибо.
Я думал, что информация идет в сообщение об ошибке, а то в BOL как-то невнятно написано.
А куда ж тогда пишется, если Trace Flag устанавливаешь для конкретного соединения?
Glory
Дата: 16.10.2003 18:05:19
в sql log.
Евгешка
Дата: 16.10.2003 18:16:40
Нету там ничего, там только такие строчки:

2003-10-16 15:43:25.84 spid53 DBCC TRACEON 1204, server process ID (SPID) 53.
2003-10-16 15:43:30.51 spid54 DBCC TRACEON 1204, server process ID (SPID) 54.
2003-10-16 15:43:55.21 spid54 DBCC TRACEON 1204, server process ID (SPID) 54.
2003-10-16 15:43:59.31 spid53 DBCC TRACEON 1204, server process ID (SPID) 53.

Хотя каждый раз были дедлоки.
andrew_Pr
Дата: 16.10.2003 19:04:09
Нужно не просто
DBCC TRACEON 1204 

DBCC TRACEON (1204, 3605,-1)

Про флаг 3605 в BOL почему-то ничего несказано (ну или я такой слепой). Но Великие Гуру с этого форума мне подсказали. я уже задавал такой вопрос.
После установки в SQl.log после каждого deadlocka будет заноситься такого рода инфа:
Wait-for graph

Node:1
TAB: 2:2009058193 [] CleanCnt:1 Mode: X Flags: 0x0
Grant List::
Owner:0x1c3b5260 Mode: X Flg:0x0 Ref:1 Life:02000000 SPID:52 ECID:0
SPID: 52 ECID: 0 Statement Type: SELECT Line #: 1
Input Buf: Language Event: select * from a (tablockx)

Requested By:
ResType:LockOwner Stype:'OR' Mode: X SPID:51 ECID:0 Ec:(0x1c657890) Value:0x1c3b51c0 Cost:(0/0)

Node:2
TAB: 2:1993058136 [] CleanCnt:1 Mode: X Flags: 0x0
Grant List::
Owner:0x1c3b52e0 Mode: X Flg:0x0 Ref:1 Life:02000000 SPID:51 ECID:0
SPID: 51 ECID: 0 Statement Type: SELECT Line #: 1
Input Buf: Language Event: select * from b (tablockx)

Requested By:
ResType:LockOwner Stype:'OR' Mode: X SPID:52 ECID:0 Ec:(0x1c593890) Value:0x1c3b5380 Cost:(0/0)
Victim Resource Owner:
ResType:LockOwner Stype:'OR' Mode: X SPID:52 ECID:0 Ec:(0x1c593890) Value:0x1c3b5380 Cost:(0/0)

что сие означает описывается в BOL :"deadlocks, troubleshooting"
Если тебе это поможет, дерзай. ;)
Евгешка
Дата: 16.10.2003 19:39:24
Спасибо, andrew_Pr

Помогло!
AAron
Дата: 16.10.2003 22:58:26
Можно еще и профайлером. Нужно добавить слежение за событиями deadlock и deadlock chain. В список полей (Columns) добавить objectID, indexID.

В принципе уже достаточно.
Запросы можно найти по SPID