Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 2 3 4 [5] 6 7 8 9   вперед  Ctrl      все
 Re: Небольшая самодельная тулза для отображения блокировок...  [new]
BugsBunny
Member

Откуда: GMT+5=EST
Сообщений: 2414
Александр Гладченко
...А есть waittime > maxbigint

and how sys.processes digests it?
22 авг 07, 18:33    [4562451]     Ответить | Цитировать Сообщить модератору
 Re: Небольшая самодельная тулза для отображения блокировок...  [new]
BugsBunny
Member

Откуда: GMT+5=EST
Сообщений: 2414
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:


--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
....
22 авг 07, 18:38    [4562467]     Ответить | Цитировать Сообщить модератору
 Re: Небольшая самодельная тулза для отображения блокировок...  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
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
А то версия 6.5 ведь тоже Вашему критерию соответствует...
23 авг 07, 08:52    [4563442]     Ответить | Цитировать Сообщить модератору
 Re: Небольшая самодельная тулза для отображения блокировок...  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
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
А то версия 6.5 ведь тоже Вашему критерию соответствует...
Прошу прощения, но я был не совсем прав. :-((
Читаем БОЛ для SQL2005 про функцию serverproperty('ProductVersion'):
БОЛ для SQL2005
ProductVersion - Версия экземпляра SQL Server в формате 'major.minor.build'
Проверяем на SQL2005:
SELECT serverproperty('ProductVersion')
Получаем:
9.00.3159.00
Поведение serverproperty('ProductVersion') в SQL2005, оказывается, изменилось! Оно не соответствует документации: возвращает четыре компонента версии, разделённые точками, а не три.
Поэтому моё предыдущее предложение неверно. Можно так:
if left(cast(serverproperty('ProductVersion') as char), charindex('.', cast(serverproperty('ProductVersion') as char))-1)>7
23 авг 07, 09:45    [4563669]     Ответить | Цитировать Сообщить модератору
 Re: Небольшая самодельная тулза для отображения блокировок...  [new]
Zelius
Member

Откуда: Россия, Москва
Сообщений: 1558
Думаю, что правильнее сделать для каждой версии свой запрос, а версию определять через
select cmptlevel from sysdatabases where name='master'
Так как для 2005 лучше использовать sys.dm_exec_sql_text. Или я не прав?

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

С уважением, Князев Константин
24 авг 07, 15:24    [4573023]     Ответить | Цитировать Сообщить модератору
 Re: Небольшая самодельная тулза для отображения блокировок...  [new]
SanyL
Member

Откуда: Москва
Сообщений: 4540
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
	

Я делал таким образом
24 авг 07, 15:49    [4573258]     Ответить | Цитировать Сообщить модератору
 Re: Небольшая самодельная тулза для отображения блокировок...  [new]
BugsBunny
Member

Откуда: GMT+5=EST
Сообщений: 2414
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 :)
24 авг 07, 16:02    [4573377]     Ответить | Цитировать Сообщить модератору
 Re: Небольшая самодельная тулза для отображения блокировок...  [new]
BugsBunny
Member

Откуда: GMT+5=EST
Сообщений: 2414
Zelius
...
BugsBunny
Какова цель этого изменения?
...

Which one?

never mind! decimal will do.
24 авг 07, 16:09    [4573427]     Ответить | Цитировать Сообщить модератору
 Re: Небольшая самодельная тулза для отображения блокировок...  [new]
Zelius
Member

Откуда: Россия, Москва
Сообщений: 1558
А имеет смысл при подключении создавать во временной базе вьюху или хранимку и потом ее дергать?
Что-то вроде для экономии ресурсов....

С уважением, Князев Константин
24 авг 07, 16:55    [4573741]     Ответить | Цитировать Сообщить модератору
 Re: Небольшая самодельная тулза для отображения блокировок...  [new]
Zelius
Member

Откуда: Россия, Москва
Сообщений: 1558
Положил отдельно версию для MSSQL 7, проверьте плиз...
SQLBlocks

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

С уважением, Князев Константин
29 авг 07, 18:54    [4594203]     Ответить | Цитировать Сообщить модератору
 Re: Небольшая самодельная тулза для отображения блокировок...  [new]
Lepsik
Member

Откуда: glubinka
Сообщений: 4256
было бы на С++ я бы дополнил возможность слать мылом нотификации. Или приделайте интерфейс а я dll подгоню.
30 авг 07, 00:25    [4595134]     Ответить | Цитировать Сообщить модератору
 Re: Небольшая самодельная тулза для отображения блокировок...  [new]
talex79
Member

Откуда:
Сообщений: 27
Zelius
Положил отдельно версию для MSSQL 7, проверьте плиз...
SQLBlocks

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

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


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

Column or parameter #14: Cannot find data type bigint
30 авг 07, 00:41    [4595146]     Ответить | Цитировать Сообщить модератору
 Re: Небольшая самодельная тулза для отображения блокировок...  [new]
Zelius
Member

Откуда: Россия, Москва
Сообщений: 1558
talex79

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

Column or parameter #14: Cannot find data type bigint


Сорри! Слона то я и не заметил! Исправил, выложил...
30 авг 07, 10:33    [4595929]     Ответить | Цитировать Сообщить модератору
 Re: Небольшая самодельная тулза для отображения блокировок...  [new]
Zelius
Member

Откуда: Россия, Москва
Сообщений: 1558
Lepsik
было бы на С++ я бы дополнил возможность слать мылом нотификации. Или приделайте интерфейс а я dll подгоню.

В принципе можно и мыло... Как тело или как вложение?
30 авг 07, 10:34    [4595934]     Ответить | Цитировать Сообщить модератору
 Re: Небольшая самодельная тулза для отображения блокировок...  [new]
Александр Гладченко
Member

Откуда:
Сообщений: 10802
Блог
Zelius
Lepsik
было бы на С++ я бы дополнил возможность слать мылом нотификации. Или приделайте интерфейс а я dll подгоню.

В принципе можно и мыло... Как тело или как вложение?


Если мылом - то только вложением и не по каждому случаю, а, если таковые были, минимум за час. Иначе, может получиться море спама :)
30 авг 07, 10:37    [4595969]     Ответить | Цитировать Сообщить модератору
 Re: Небольшая самодельная тулза для отображения блокировок...  [new]
Max-xaM
Member

Откуда: Гусь-Хрустальный
Сообщений: 556
Щелкаю два раза по строчке.
Показывается инфа о процессе с кнопочками Refresh, Kill, Close.

Очень часто она НЕ закрывается ни крестиком, ни кнопкой Close.
30 авг 07, 10:45    [4596035]     Ответить | Цитировать Сообщить модератору
 Re: Небольшая самодельная тулза для отображения блокировок...  [new]
Zelius
Member

Откуда: Россия, Москва
Сообщений: 1558
Александр Гладченко

Если мылом - то только вложением и не по каждому случаю, а, если таковые были, минимум за час. Иначе, может получиться море спама :)

А если программа завершилась до окончания часа? Не ждать же пока отошлет может пару мегабайт...
30 авг 07, 10:50    [4596076]     Ответить | Цитировать Сообщить модератору
 Re: Небольшая самодельная тулза для отображения блокировок...  [new]
aag
Member

Откуда: Москва
Сообщений: 1955
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)
30 авг 07, 11:10    [4596269]     Ответить | Цитировать Сообщить модератору
 Re: Небольшая самодельная тулза для отображения блокировок...  [new]
Zelius
Member

Откуда: Россия, Москва
Сообщений: 1558
Max-xaM
Щелкаю два раза по строчке.
Показывается инфа о процессе с кнопочками Refresh, Kill, Close.

Очень часто она НЕ закрывается ни крестиком, ни кнопкой Close.

Да, есть еще проблемы с асинхронностью - буду пересматривать код для их устранения. Если есть какая-то закономерность - напиши плиз!
30 авг 07, 11:38    [4596527]     Ответить | Цитировать Сообщить модератору
 Re: Небольшая самодельная тулза для отображения блокировок...  [new]
Александр Гладченко
Member

Откуда:
Сообщений: 10802
Блог
Zelius
Александр Гладченко

Если мылом - то только вложением и не по каждому случаю, а, если таковые были, минимум за час. Иначе, может получиться море спама :)

А если программа завершилась до окончания часа? Не ждать же пока отошлет может пару мегабайт...


А почему бы не подождать :) ИМХО, конечно же всё должно настраиваться, а по умолчанию лучше поставить заслон спаму...
30 авг 07, 12:10    [4596777]     Ответить | Цитировать Сообщить модератору
 Re: Небольшая самодельная тулза для отображения блокировок...  [new]
Max-xaM
Member

Откуда: Гусь-Хрустальный
Сообщений: 556
Zelius
Max-xaM
Щелкаю два раза по строчке.
Показывается инфа о процессе с кнопочками Refresh, Kill, Close.

Очень часто она НЕ закрывается ни крестиком, ни кнопкой Close.

Да, есть еще проблемы с асинхронностью - буду пересматривать код для их устранения. Если есть какая-то закономерность - напиши плиз!

Заметил.
Если открыть какое-то окно (настройки и т.д.), а в это время обновится список, то окно не закрывается.

Новая бага: нельзя закрыть. Quit в трее тоже не закрывает программу. Просто свернул ее и развернул. Делай Application.Terminate вместо Quit (Close).
30 авг 07, 15:19    [4598556]     Ответить | Цитировать Сообщить модератору
 Re: Небольшая самодельная тулза для отображения блокировок...  [new]
hnkovr
Member

Откуда:
Сообщений: 214
Как прописывать ConnectionString?
30 авг 07, 15:34    [4598707]     Ответить | Цитировать Сообщить модератору
 Re: Небольшая самодельная тулза для отображения блокировок...  [new]
SanyL
Member

Откуда: Москва
Сообщений: 4540
У меня эа отправку на почту отвечает отдельный сервис (както самому пришлось писать, т.к. те что были бесплатные не подходили)... Думаю что нет смысла нагружать эту систему подобными функциями - если это необходимо админу, то он всегда сам настроит отправку на почту...
30 авг 07, 15:47    [4598806]     Ответить | Цитировать Сообщить модератору
 Re: Небольшая самодельная тулза для отображения блокировок...  [new]
-=MIX=-
Member

Откуда: Днепропетровск
Сообщений: 783
Не проще ли просто в QA запускать нужный скрипт для просмотра всей нужной инфы?:)

З.Ы. Я вообще написал процедуру и повесил на джоб.
Если залочка не уходит через 4 минуты - убивается с предварительным логированием:)
30 авг 07, 15:47    [4598810]     Ответить | Цитировать Сообщить модератору
 Re: Небольшая самодельная тулза для отображения блокировок...  [new]
Zelius
Member

Откуда: Россия, Москва
Сообщений: 1558
hnkovr
Как прописывать ConnectionString?

Нажми кнопку справа от поля ввода...
30 авг 07, 15:52    [4598867]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 2 3 4 [5] 6 7 8 9   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить