|
v7: Помониторить блокировки СКЛ | ☑ | ||
---|---|---|---|---|
0
monsterZE
23.10.12
✎
15:55
|
написал вот такую шляпу =) в "Заблокирован" отображается тот, кто заблокировал? spid к имена 1с прикрутил.. можно что-нить полезное еще выводить?
ТекстЗапроса = " |select | str(spid,4) as [СИД], | left(nameb.name,10) as [База], | left(lastwaittype,20) as [ЛастВайт], | str(open_tran,4) as [Транзакции], | left(status,25) as [Статус], | left(cmd,25) as [Комманда], | str(blocked,4) as [Заблокирован], | str(max(waittime),15) as [Время] , | str(sum(cpu),15) as [ЦПУ] |from | master..sysprocesses procs (nolock) |left join | master.sys.databases nameb (nolock) on nameb.database_id=procs.dbid |where | left(program_name,4) = '1CV7' | and left(cmd,25) <> 'AWAITING COMMAND' |group by | str(spid,4), left(nameb.name,10), left(lastwaittype,20), str(open_tran,4), left(status,25), left(cmd,25), str(blocked,4) |order by | str(sum(cpu),15) desc"; ТабЗапроса = Запрос.ВыполнитьИнструкцию(ТекстЗапроса); ТабСКЛ.Очистить(); ККол = ТабЗапроса.КоличествоКолонок(); Для ъ=1 По ККол Цикл Заголовок = ""; ТабЗапроса.ПолучитьПараметрыКолонки(ъ,,,,Заголовок); ТабСКЛ.НоваяКолонка(Заголовок,,,,,15); КонецЦикла; КСтр = ТабЗапроса.КоличествоСтрок(); Для с=1 По КСтр Цикл ТабСКЛ.НоваяСтрока(); Для ъ=1 По ККол Цикл ТабСКЛ.УстановитьЗначение(с,ъ,ТабЗапроса.ПолучитьЗначение(с,ъ)); КонецЦикла; КонецЦикла; |
|||
1
monsterZE
23.10.12
✎
15:57
|
например, какой именно объект заблокирован..
|
|||
2
monsterZE
23.10.12
✎
16:00
|
кстати, периодически возникает ошибка о невозможности преобразования expression в int..
кто тут экспрешен? =) |
|||
3
monsterZE
23.10.12
✎
16:05
|
ну и попутно бы хотелось кикать из этого монитора, как из монитора активности СКЛ
|
|||
4
monsterZE
23.10.12
✎
16:44
|
Убрал лишние преобразования..
Хорошо.. а есть описание столбцов для системных таблиц SQL? т.е. например для syslockinfo |
|||
5
Fragster
гуру
23.10.12
✎
16:45
|
(0) переходи на v8, там все в 2 таблицы не упирается
|
|||
6
monsterZE
23.10.12
✎
16:50
|
(5) в моем случае - пока ресурс 77 далеко не исчерпан =)
лавинообразные блокировки возникают очень редко, но все равно хочется выяснить почему.. т.е. те случаю, когда приходитя кикать одного, чтобы остальные продолжали работу.. |
|||
7
monsterZE
23.10.12
✎
17:19
|
по описаю таблиц все нашел. спс. =)
|
|||
8
Злопчинский
23.10.12
✎
22:00
|
(0) есть такая фирма "софтпоинт" - они могут много гитик
|
|||
9
1Сергей
24.10.12
✎
07:31
|
>> пока ресурс 77 далеко не исчерпан
+100500 |
|||
10
Mikeware
24.10.12
✎
07:32
|
(9) зато порой приходится извращаться :-)
|
|||
11
dk
24.10.12
✎
07:52
|
(0) а зачем это? не проще в интерпрайзе посмотреть?
|
|||
12
dk
24.10.12
✎
07:57
|
куда полезней информация типа
Документ: ... заблокировал пользователь .... дата начала блокировки ... |
|||
13
ЧеловекДуши
24.10.12
✎
08:14
|
(10)В 8.2, на управляемом интерфейсе, то же не сахар :)
|
|||
14
ADirks
24.10.12
✎
08:21
|
(0) у нас так
ТекстЗапроса = "Set NoCount ON |select | locks.resource_type, | databases.name DB, | IsNull(objects.name, Convert(varchar(20), locks.resource_associated_entity_id)) Object, | locks.resource_description, | locks.request_mode, | locks.request_type, | locks.request_status, | locks.request_reference_count, | procs.lastwaittype, | procs.open_tran, | procs.status, | procs.cmd, | locks.request_session_id |from | sys.dm_tran_locks locks | left join sys.all_objects objects ON objects.object_id = locks.resource_associated_entity_id | left join sys.databases databases on databases.database_id = locks.resource_database_id | left join master..sysprocesses procs (nolock) on procs.spid = locks.request_session_id |WHERE | (1=1) |"; Если фТолькоТекущаяБаза = 1 Тогда ТекстЗапроса = ТекстЗапроса + " | AND databases.database_id = db_id() |"; КонецЕсли; Если фТолькоТекущаяСессия = 1 Тогда ТекстЗапроса = ТекстЗапроса + " | AND (locks.request_session_id = @@SPID) |"; КонецЕсли; Если фТолькоОбъекты = 1 Тогда ТекстЗапроса = ТекстЗапроса + " | AND locks.resource_type != 'DATABASE' |"; КонецЕсли; ТекстЗапроса = ТекстЗапроса + " |order by | databases.name, | objects.name, | locks.request_session_id, | locks.request_mode |"; тз = ЗапросСКЛ.ВыполнитьИнструкцию(ТекстЗапроса); //РедакторТЗ(тз, "Блокировки "+ТекущаяДата()+" "+ТекущееВремя()); тпБлокировки_тзДанные.Загрузить(тз); тпБлокировки.ОбновитьСтроки(); Описания в msdn'е есть, хоть и не фонтан конечно |
|||
15
ADirks
24.10.12
✎
08:25
|
Про всякие статистики ещё вот такую статейку почитать можно http://msdn.microsoft.com/ru-ru/magazine/cc135978.aspx
Самый первый запрос в своё время весьма помог. |
|||
16
monsterZE
24.10.12
✎
09:50
|
(11) в стандартном мониторе не видно имен пользователей
(12) кстати тоже насущьный вопрос и не только для документа (14) спасибо! ща буду дальше смотреть.. =) |
|||
17
Mikeware
24.10.12
✎
10:30
|
(12) Так это давно есть...
|
|||
18
monsterZE
24.10.12
✎
10:48
|
(17) как то попадалась реализации... но по памяти все они не гарантировали 100% корректного поведения =)
|
|||
19
monsterZE
24.10.12
✎
10:49
|
(18)..но это я еще поищу =)
|
|||
20
Ёпрст
24.10.12
✎
10:52
|
||||
21
dk
24.10.12
✎
10:57
|
(17) Дык я в курсе, автору говорил )
|
|||
22
monsterZE
24.10.12
✎
11:49
|
а помимо юзверей соединений быть не может?
а то что-то у меня номера СИДов, отсутствующие среди розданных пользователям.... 8-() |
|||
23
Mikeware
24.10.12
✎
11:49
|
(22) может
|
|||
24
monsterZE
24.10.12
✎
12:02
|
(23) мда.. =) а это СКЛ плодит или 1С-ина?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |