powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Небольшая самодельная тулза для отображения блокировок...
25 сообщений из 225, страница 5 из 9
Небольшая самодельная тулза для отображения блокировок...
    #34745741
Фотография BugsBunny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Александр Гладченко...А есть waittime > maxbigint
and how sys.processes digests it?
...
Рейтинг: 0 / 0
Небольшая самодельная тулза для отображения блокировок...
    #34745750
Фотография BugsBunny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zelius talex79
Т.е. только decimal(28)

Ок, тогда пока его и поставлю..
I'd do "upconversion". I've started changing your code (before you even asked for comments) but didn't have enough time. Here is just draft:


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
--I would add parameters to minimize volume of information sent to client as well as internal processing overhaul (see below)
declare @filter sysname -- will be used to limit total number of records fetched and processes for SQL statement
    , @wait_time int -- we dont want alarm on healthy short-term blocking
    , @limit_sql_detection int -- will be used to limit number of SQL statements fetched per blocking chain branch 
    , @ignore_selfblocking bit
select @filter = N'blocking' -- {blocking | waits | all}
    , @limit_sql_detection =  3  -- <=0-do not fetch SQL at all, >0-number of SQL to detect per blocking chain branch
    , @wait_time =  1000  -- im milliseconds
    , @ignore_selfblocking =  1  

SET NOCOUNT ON
SET XACT_ABORT ON
--go in favor of temporary table for backward compatibility
if object_id('tempdb..#processes') is not null drop table #processes
create table #processes( 
	[spid] [smallint] NULL, 
	[blocked] [smallint] NULL, 
	[name] [nvarchar] ( 128 ) NULL,
	[waittime] [int] NULL , --changed from bigint for backward compatibility
	[lastwaittype] [nchar] ( 32 ) NULL ,
	[waitresource] [nchar] ( 256 ) NULL ,
	[open_tran] [smallint] NULL ,
	[status] [nchar] ( 30 ) NULL ,
	[hostname] [nchar] ( 128 ) NULL ,
	[program_name] [nchar] ( 128 ) NULL ,
	[cmd] [nchar] ( 16 ) NULL ,
	[loginame] [nchar] ( 128 ) NULL ,
	[cpu] [int] NULL ,
	[physical_io] [int] NULL , --changed from bigint for backward compatibility
	[memusage] [int] NULL,
	[last_batch] [datetime] NULL,
	[sql] [nvarchar] ( 500 ) NULL
)

if @@version not like 'Microsoft SQL Server  7%' --upconverting to SS2005, application code should be able to compensate the difference between versions
    exec ('alter table #processes alter column [waittime] [bigint] NULL;
        alter table #processes alter column [physical_io] [bigint] NULL;')

insert into #processes with(tablock)
select spid, blocked, d.name, waittime, lastwaittype, waitresource, open_tran, p.status, 
		hostname, program_name, cmd, loginame, cpu, physical_io, memusage, last_batch, ''
from master.dbo.sysprocesses p left outer join master..sysdatabases d on d.dbid = p.dbid

--filtering added
....
...
Рейтинг: 0 / 0
Небольшая самодельная тулза для отображения блокировок...
    #34746387
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BugsBunny
Код: plaintext
if @@version not like 'Microsoft SQL Server  7%' --upconverting to SS2005, application code should be able to compensate the difference between versions
Можно, наверно, и так?
Код: plaintext
if parsename(cast(serverproperty('ProductVersion') as char), 3 )> 7 
А то версия 6.5 ведь тоже Вашему критерию соответствует...
...
Рейтинг: 0 / 0
Небольшая самодельная тулза для отображения блокировок...
    #34746519
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iap BugsBunny
Код: plaintext
if @@version not like 'Microsoft SQL Server  7%' --upconverting to SS2005, application code should be able to compensate the difference between versions
Можно, наверно, и так?
Код: plaintext
if parsename(cast(serverproperty('ProductVersion') as char), 3 )> 7 
А то версия 6.5 ведь тоже Вашему критерию соответствует... Прошу прощения, но я был не совсем прав. :-((
Читаем БОЛ для SQL2005 про функцию serverproperty('ProductVersion'): БОЛ для SQL2005ProductVersion - Версия экземпляра SQL Server в формате 'major.minor.build' Проверяем на SQL2005:
Код: plaintext
SELECT serverproperty('ProductVersion')
Получаем:
Код: plaintext
 9 . 00 . 3159 . 00 
Поведение serverproperty('ProductVersion') в SQL2005, оказывается, изменилось! Оно не соответствует документации: возвращает четыре компонента версии, разделённые точками, а не три.
Поэтому моё предыдущее предложение неверно. Можно так:
Код: plaintext
if left(cast(serverproperty('ProductVersion') as char), charindex('.', cast(serverproperty('ProductVersion') as char))- 1 )> 7 
...
Рейтинг: 0 / 0
Небольшая самодельная тулза для отображения блокировок...
    #34751246
Zelius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Думаю, что правильнее сделать для каждой версии свой запрос, а версию определять через
Код: plaintext
select cmptlevel from sysdatabases where name='master'
Так как для 2005 лучше использовать sys.dm_exec_sql_text. Или я не прав?

BugsBunny
Какова цель этого изменения?

С уважением, Князев Константин
...
Рейтинг: 0 / 0
Небольшая самодельная тулза для отображения блокировок...
    #34751350
Фотография SanyL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
declare @ver varchar( 22 )
declare @retCode int
select @ver=replace(@@version,' ','')
if @ver = 'MicrosoftSQLServer2005'
	select @retCode= 2005  else 
if @ver = 'MicrosoftSQLServer2000'
	select @retCode= 2000 
	else select @retCode=- 1 
select @retCode
	

Я делал таким образом
...
Рейтинг: 0 / 0
Небольшая самодельная тулза для отображения блокировок...
    #34751404
Фотография BugsBunny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iap...Можно, наверно, и так?...
...А то версия 6.5 ведь тоже Вашему критерию соответствует...
No, unfortunately. serverproperty was introduced in 2000. Having mix between 7/2000/2005 I had to write backward compatible scripts and know that pretty well. :(

The guys who have 6.5 can vote for adding their case :)
...
Рейтинг: 0 / 0
Небольшая самодельная тулза для отображения блокировок...
    #34751430
Фотография BugsBunny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zelius...
BugsBunny
Какова цель этого изменения?
...

Which one?

never mind! decimal will do.
...
Рейтинг: 0 / 0
Небольшая самодельная тулза для отображения блокировок...
    #34751575
Zelius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А имеет смысл при подключении создавать во временной базе вьюху или хранимку и потом ее дергать?
Что-то вроде для экономии ресурсов....

С уважением, Князев Константин
...
Рейтинг: 0 / 0
Небольшая самодельная тулза для отображения блокировок...
    #34762824
Zelius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Положил отдельно версию для MSSQL 7, проверьте плиз...
SQLBlocks

И исходники тоже положил. Если будут комментарии - велкам!

С уважением, Князев Константин
...
Рейтинг: 0 / 0
Небольшая самодельная тулза для отображения блокировок...
    #34763193
Lepsik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
было бы на С++ я бы дополнил возможность слать мылом нотификации. Или приделайте интерфейс а я dll подгоню.
...
Рейтинг: 0 / 0
Небольшая самодельная тулза для отображения блокировок...
    #34763201
talex79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ZeliusПоложил отдельно версию для MSSQL 7, проверьте плиз...
SQLBlocks

И исходники тоже положил. Если будут комментарии - велкам!

С уважением, Князев Константин

Ошибку пишет:

Column or parameter #14: Cannot find data type bigint
...
Рейтинг: 0 / 0
Небольшая самодельная тулза для отображения блокировок...
    #34763598
Zelius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
talex79
Ошибку пишет:

Column or parameter #14: Cannot find data type bigint

Сорри! Слона то я и не заметил! Исправил, выложил...
...
Рейтинг: 0 / 0
Небольшая самодельная тулза для отображения блокировок...
    #34763602
Zelius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lepsikбыло бы на С++ я бы дополнил возможность слать мылом нотификации. Или приделайте интерфейс а я dll подгоню.
В принципе можно и мыло... Как тело или как вложение?
...
Рейтинг: 0 / 0
Небольшая самодельная тулза для отображения блокировок...
    #34763614
Фотография Александр Гладченко
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zelius Lepsikбыло бы на С++ я бы дополнил возможность слать мылом нотификации. Или приделайте интерфейс а я dll подгоню.
В принципе можно и мыло... Как тело или как вложение?

Если мылом - то только вложением и не по каждому случаю, а, если таковые были, минимум за час. Иначе, может получиться море спама :)
...
Рейтинг: 0 / 0
Небольшая самодельная тулза для отображения блокировок...
    #34763646
Фотография Max-xaM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Щелкаю два раза по строчке.
Показывается инфа о процессе с кнопочками Refresh, Kill, Close.

Очень часто она НЕ закрывается ни крестиком, ни кнопкой Close.
...
Рейтинг: 0 / 0
Небольшая самодельная тулза для отображения блокировок...
    #34763667
Zelius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Александр Гладченко
Если мылом - то только вложением и не по каждому случаю, а, если таковые были, минимум за час. Иначе, может получиться море спама :)
А если программа завершилась до окончания часа? Не ждать же пока отошлет может пару мегабайт...
...
Рейтинг: 0 / 0
Небольшая самодельная тулза для отображения блокировок...
    #34763763
aag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iap BugsBunny
if @@version not like 'Microsoft SQL Server 7%' --upconverting to SS2005, application code should be able to compensate the difference between versions
Можно, наверно, и так?
if parsename(cast(serverproperty('ProductVersion') as char),3)>7

master..xp_msver @optname = 'ProductVersion'
И анализируем первую цифру Character_Value.

Для 6.5, впрочем не проверял.

Nobody faults but mine... (LZ)
...
Рейтинг: 0 / 0
Небольшая самодельная тулза для отображения блокировок...
    #34763921
Zelius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Max-xaMЩелкаю два раза по строчке.
Показывается инфа о процессе с кнопочками Refresh, Kill, Close.

Очень часто она НЕ закрывается ни крестиком, ни кнопкой Close.
Да, есть еще проблемы с асинхронностью - буду пересматривать код для их устранения. Если есть какая-то закономерность - напиши плиз!
...
Рейтинг: 0 / 0
Небольшая самодельная тулза для отображения блокировок...
    #34764084
Фотография Александр Гладченко
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zelius Александр Гладченко
Если мылом - то только вложением и не по каждому случаю, а, если таковые были, минимум за час. Иначе, может получиться море спама :)
А если программа завершилась до окончания часа? Не ждать же пока отошлет может пару мегабайт...

А почему бы не подождать :) ИМХО, конечно же всё должно настраиваться, а по умолчанию лучше поставить заслон спаму...
...
Рейтинг: 0 / 0
Небольшая самодельная тулза для отображения блокировок...
    #34764963
Фотография Max-xaM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zelius Max-xaMЩелкаю два раза по строчке.
Показывается инфа о процессе с кнопочками Refresh, Kill, Close.

Очень часто она НЕ закрывается ни крестиком, ни кнопкой Close.
Да, есть еще проблемы с асинхронностью - буду пересматривать код для их устранения. Если есть какая-то закономерность - напиши плиз!
Заметил.
Если открыть какое-то окно (настройки и т.д.), а в это время обновится список, то окно не закрывается.

Новая бага: нельзя закрыть. Quit в трее тоже не закрывает программу. Просто свернул ее и развернул. Делай Application.Terminate вместо Quit (Close).
...
Рейтинг: 0 / 0
Небольшая самодельная тулза для отображения блокировок...
    #34765046
Фотография hnkovr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как прописывать ConnectionString?
...
Рейтинг: 0 / 0
Небольшая самодельная тулза для отображения блокировок...
    #34765108
Фотография SanyL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня эа отправку на почту отвечает отдельный сервис (както самому пришлось писать, т.к. те что были бесплатные не подходили)... Думаю что нет смысла нагружать эту систему подобными функциями - если это необходимо админу, то он всегда сам настроит отправку на почту...
...
Рейтинг: 0 / 0
Небольшая самодельная тулза для отображения блокировок...
    #34765110
-=MIX=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не проще ли просто в QA запускать нужный скрипт для просмотра всей нужной инфы?:)

З.Ы. Я вообще написал процедуру и повесил на джоб.
Если залочка не уходит через 4 минуты - убивается с предварительным логированием:)
...
Рейтинг: 0 / 0
Небольшая самодельная тулза для отображения блокировок...
    #34765142
Zelius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hnkovrКак прописывать ConnectionString?
Нажми кнопку справа от поля ввода...
...
Рейтинг: 0 / 0
25 сообщений из 225, страница 5 из 9
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Небольшая самодельная тулза для отображения блокировок...
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]