![]() |
![]() |
![]() |
|
sql 2000 дидлоки с утра достали(( как обнаружить того кто блочит | ☑ | ||
---|---|---|---|---|
0
Skom
20.04.11
✎
07:26
|
как увидить запросом SPID того кто блочит всех остальных
ну когда в sql сервере в current activity смотришь и там в locks видно кто заблочен и кто блочит надо получить запросом. потому что в момент блокировок нет доступа к этой информации. постоянно говорит что невозможно получить эту инфу из EM кто может помочь??? |
|||
1
Skom
20.04.11
✎
07:28
|
sp_lock не показывает того кто блокирует
там я вижу только заблокированных. ну или я как то не так смотрю. в общем научите плиз |
|||
2
упс
20.04.11
✎
07:49
|
В профайлере отлавливайте deadlock graph - увидите кто и кого
|
|||
3
Skom
20.04.11
✎
07:56
|
(2) ок. спс.
а нельзя ли как нить из базы данных мастер выудить эту информацию??? |
|||
4
Андрюха
20.04.11
✎
08:00
|
У нас долгое время дедлочил сбрендивший маршрутизатор, прямо замучились, пока его вычислили.
|
|||
5
Skom
20.04.11
✎
08:00
|
(4) как вычислили???
|
|||
6
упс
20.04.11
✎
08:08
|
(3) Я думаю, что вряд ли вы в мастере это увидите - максимум, зная таблицу, сможете увидеть кто на нее наложил блокировки и кто ждет ее освобождения. Вообще, database enngine не знает ни про какие дедлоки, он просто накладывает/снимает блокировки, а отдельное фоновое задание их анализирует и ищет дедлоки, после чего убивает одну из сессий. А чем вас профайлер не устраивает?
Вообще, вот годная статья по дедлокам: http://www.rsdn.ru/article/db/deadlocks.xml |
|||
7
Андрюха
20.04.11
✎
08:09
|
Уже всё перепробовали, SQL поставили 2005, память сервера увеличили, стали делать ежедневную оптимизацию, млин... Потом чё-то решили железо проверить, раутер поменяли - и всё взлетело.
|
|||
8
VladZ
20.04.11
✎
08:18
|
(0)
select str(spid,4) as spid,left(loginame,10) as login, left(hostname,15) as host, str(blocked,4) as blk, str(max(waittime),15) as wait , str(sum(cpu),15) as CPU, str(sum(memusage),15) as mem , hostprocess from master..sysprocesses where hostname<>'' group by str(spid,4),left(loginame,10), left(hostname,15), str(blocked,4), hostprocess, hostname ORDER BY str(blocked,4) desc, left(hostname,15) |
|||
9
VladZ
20.04.11
✎
08:21
|
В ХостМониторе используем такой запрос:
select convert(varchar(9), t1.blocked)+' '+rtrim(t2.hostname)+' '+convert(varchar(9), t2.hostprocess) +db_name(t2.dbid) from master..sysprocesses t1 inner join master..sysprocesses t2 on (t2.spid = t1.blocked) and (t2.blocked = 0) where t1.hostname<>'' and t1.blocked<>0 and t1.waittime>1000 union all select 'OK' as bloked Принцип тот же, вид другой. |
|||
10
Кириллка
20.04.11
✎
08:42
|
(0)может подойдет:
SELECT CAST(sli.req_spid as smallint) as spid, sli.rsc_dbid as dbid, sli.rsc_objid as ObjId, so.Name as ObjectName, sli.rsc_indid as IndId, SUBSTRING(v.name, 1, 4) as Type, SUBSTRING(sli.rsc_text, 1, 16) as Resource, SUBSTRING(u.name, 1, 8) as Mode, SUBSTRING(x.name, 1, 5) as Status, ISNULL(CAST(BlkSli.req_spid as varchar(9)), '') as BlkBy FROM master.dbo.syslockinfo as sli (NOLOCK) INNER JOIN master.dbo.spt_values as v (NOLOCK) ON sli.rsc_type = v.number AND v.type = 'LR' INNER JOIN master.dbo.spt_values as x (NOLOCK) ON sli.req_status = x.number AND x.type = 'LS' INNER JOIN master.dbo.spt_values as u (NOLOCK) ON sli.req_mode + 1 = u.number AND u.type = 'L' INNER JOIN master.dbo.sysdatabases as sd (NOLOCK) ON sli.rsc_dbid = sd.dbid INNER JOIN dbo.sysobjects as so (NOLOCK) ON sli.rsc_objid = so.id LEFT JOIN master.dbo.syslockinfo as BlkSli (NOLOCK) ON BlkSli.rsc_dbid = sli.rsc_dbid AND BlkSli.rsc_objid = sli.rsc_objid AND BlkSli.req_spid != sli.req_spid AND sli.req_status = 3 AND BlkSli.req_status = 1 WHERE sd.name = DB_NAME() |
|||
11
Skom
20.04.11
✎
09:05
|
буду смотреть.
сейчас делаю sql таблицу в самой базе что бы видеть какие документы открыты в данный момент в целом во всей базе |
|||
12
Skom
20.04.11
✎
14:04
|
кстати ка выяснилось ДИДЛОКИ постоянно в течении дня совершал один и тот же компьютер.
работа идет в терминальном режиме. на сервере терминалов. 1С запускает из того же каталога что и остальные. может было у кого что подобное. я понимаю на железяки косить если бы локально запускалась 1С но тут то с СЕРВЕРА терминалов.... |
|||
13
Кириллка
20.04.11
✎
14:12
|
(12)на каких таблицах хоть? небось напрограммировал так?
|
|||
14
Skom
20.04.11
✎
14:36
|
(13) пока не ясно почему у одного из 4-х пользователей
(выписка документов физлицам в торговом зале) возникают такие дидлоки |
|||
15
Кириллка
20.04.11
✎
14:42
|
(14)тебе скрипт из (10) не помог чтоли?
|
|||
16
Skom
20.04.11
✎
14:55
|
я делаю монитор действий в 1С счас
будут открытые документы видны и будет видно действие с документом. проводится он или просто открыт. и потом монитор на ТП зафигачю. проще будет решать вопросы зависаний и косяков |
|||
17
Кириллка
20.04.11
✎
14:56
|
(0)А вообще для твоего случая mssql2000: http://www.rsdn.ru/article/db/deadlocks.xml
|
|||
18
Skom
20.04.11
✎
15:01
|
так в 6 уже было))
|
|||
19
Кириллка
20.04.11
✎
15:11
|
(18)так повторение - мать учения.
|
|||
20
val
20.04.11
✎
15:24
|
(0) Я пользуюсь этим:
http://www.sql.ru/forum/actualthread.aspx?bid=1&tid=272902&pg=1 |
|||
21
Skom
21.04.11
✎
05:28
|
(20) спс. буду пользоваться мониторить
|
|||
22
VladZ
21.04.11
✎
10:45
|
У нас в кабинете на стене висят два монитора, на которые с помощью HostMonitor-а выводятся всяческие показатели: контроль Инета, наличие пинга до филиальских серваков, блокировки SQL и т.д.
Там для анализа блокировок используется запрос, озвученный в (9). Причем еще и письма приходят на электронку. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |