Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Есть в системе инструмент для оповещения в случае длительной блокировки?  [new]
leonix
Member

Откуда:
Сообщений: 403
Бывает что в системе возникают длительные блокировки (неудачная программная реализация, исправлять долго). Грубо говоря один пользователь запустил что-то и ушел домой, а другой мучается и не может что-то в системе сделать. Хорошо если сообразит позвонить в IT и сообщить о проблеме. Нужен инструмент который делал бы рассылку при возникновении в системе любой длительной блокировки.
27 мар 19, 11:36    [21844780]     Ответить | Цитировать Сообщить модератору
 Re: Есть в системе инструмент для оповещения в случае длительной блокировки?  [new]
ЛиП
Member

Откуда:
Сообщений: 348
Джоб + sysprocesses (blocked, waitetime) + sp_send_dbmail
27 мар 19, 12:13    [21844861]     Ответить | Цитировать Сообщить модератору
 Re: Есть в системе инструмент для оповещения в случае длительной блокировки?  [new]
komrad
Member

Откуда:
Сообщений: 5245
leonix,

Blocked process report


https://jackworthen.com/2018/05/25/creating-a-blocked-process-report-using-extended-events-in-sql-server/
27 мар 19, 12:13    [21844862]     Ответить | Цитировать Сообщить модератору
 Re: Есть в системе инструмент для оповещения в случае длительной блокировки?  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7780
leonix,

можно создать alert на длительно выполняющиеся транзакции.
27 мар 19, 12:13    [21844863]     Ответить | Цитировать Сообщить модератору
 Re: Есть в системе инструмент для оповещения в случае длительной блокировки?  [new]
leonix
Member

Откуда:
Сообщений: 403
Всем спасибо! Пошёл экспериментировать.
27 мар 19, 13:01    [21844965]     Ответить | Цитировать Сообщить модератору
 Re: Есть в системе инструмент для оповещения в случае длительной блокировки?  [new]
leonix
Member

Откуда:
Сообщений: 403
Подскажите как Extended Events отправлять по email?
27 мар 19, 14:52    [21845134]     Ответить | Цитировать Сообщить модератору
 Re: Есть в системе инструмент для оповещения в случае длительной блокировки?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31371
leonix
Подскажите как Extended Events отправлять по email?
Звучит как "Подскажите как команды процессора отправлять по email?"
27 мар 19, 15:52    [21845208]     Ответить | Цитировать Сообщить модератору
 Re: Есть в системе инструмент для оповещения в случае длительной блокировки?  [new]
komrad
Member

Откуда:
Сообщений: 5245
leonix
Подскажите как Extended Events отправлять по email?

надо анализировать появление новых данных в трассе и отсылать письмо

анализировать с помощью запроса
отсылать письмо с помощью процедуры sp_send_dbmail или с помощью джобы и нотификации операторов

например, как здесь
27 мар 19, 15:56    [21845216]     Ответить | Цитировать Сообщить модератору
 Re: Есть в системе инструмент для оповещения в случае длительной блокировки?  [new]
leonix
Member

Откуда:
Сообщений: 403
Спасибо за информацию.
Значит я не правильно понял. Я думал что логично было бы отправлять события по почте.
27 мар 19, 16:09    [21845228]     Ответить | Цитировать Сообщить модератору
 Re: Есть в системе инструмент для оповещения в случае длительной блокировки?  [new]
komrad
Member

Откуда:
Сообщений: 5245
leonix
Спасибо за информацию.
Значит я не правильно понял. Я думал что логично было бы отправлять события по почте.

каждому логично по своему - кому-то нужно в таблицу, кому-то в лог, кому-то по электропочте

вот тут еще посмотри
https://www.sqlservergeeks.com/sql-server-configure-alerts-for-long-running-queries/

короче, способов решить подобную задачу несколько
выбирай на свой вкус
27 мар 19, 17:06    [21845275]     Ответить | Цитировать Сообщить модератору
 Re: Есть в системе инструмент для оповещения в случае длительной блокировки?  [new]
Сруль.
Member

Откуда:
Сообщений: 121
Слышь, мужик.
А мы с тобой не на те-же грабли наступили?
В соседней хате крутится покупная прога UC4.
Старые коннекшены не убирает.
А те раз в три дня давят сервер.
Так с опохмёлки я их косю.
Без всякой автоматики.
Первый шаг: надо в мастере поставить прогу Адама Маханика. sp_WhoIsActive.
Здоровенная-я её в файле.
Её щас весь мир знает. На новых версиях Майкрософт сам ставит.
За неё не уволят.
Она отлавливает активные процессы.
Опираясь на неё, моя хулиганка отлавливает застрявших .
Скажу сразу-у нас этот UC4 в тепличных условиях-отдельный сервер.
Поэтому, я не боюсь скосить соседей. Вы уж как-то творчески подойдите.

create proc [dbo].[sp_UC4_old_kill]
as
begin
if object_id('tempdb.dbo.quick_debug') is not null drop table tempdb.dbo.quick_debug

DECLARE @s VARCHAR(MAX)

EXEC sp_WhoIsActive 
    @format_output = 0, 
    @return_schema = 1, 
    @schema = @s OUTPUT

SET @s = REPLACE(@s, '<table_name>', 'tempdb.dbo.quick_debug')

EXEC(@s) 


EXEC sp_WhoIsActive 
    @format_output = 0, 
    @destination_table = 'tempdb.dbo.quick_debug'

--WAITFOR DELAY '00:00:05' 

select 'kill '+convert(varchar(8),session_id )+' --'+loginame,login_time
from tempdb.dbo.quick_debug,
sysprocesses
where session_id=spid and datediff(day,login_time,GETDATE())>0
return
end
--exec [sp_UC4_old_kill]


К сообщению приложен файл (1.sql - 126Kb) cкачать
2 апр 19, 16:38    [21850360]     Ответить | Цитировать Сообщить модератору
 Re: Есть в системе инструмент для оповещения в случае длительной блокировки?  [new]
komrad
Member

Откуда:
Сообщений: 5245
leonix
Спасибо за информацию.
Значит я не правильно понял. Я думал что логично было бы отправлять события по почте.


https://sqlpal.blogspot.com/2019/04/setup-sql-server-alert-to-get.html
30 апр 19, 15:51    [21875652]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить