powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как сделать оповещение в случае большого количества длит-ных блок-ок за последние полчаса?
16 сообщений из 16, страница 1 из 1
Как сделать оповещение в случае большого количества длит-ных блок-ок за последние полчаса?
    #39803167
Фотография leonix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Другими словами проще говоря.
Нужно постоянно подсчитывать блокировки и если за последние полчаса количество блокировок стало больше некоторой величины то отправлять письмо.
Подскажите куда копать.
...
Рейтинг: 0 / 0
Как сделать оповещение в случае большого количества длит-ных блок-ок за последние полчаса?
    #39803168
Фотография leonix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И эти блокировки должны быть более 15 секунд.
Т.е. надо постоянно подсчитывать блокировки длительностью более 15 сек.
...
Рейтинг: 0 / 0
Как сделать оповещение в случае большого количества длит-ных блок-ок за последние полчаса?
    #39803169
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
leonix,

каких блокировок?
...
Рейтинг: 0 / 0
Как сделать оповещение в случае большого количества длит-ных блок-ок за последние полчаса?
    #39803172
Фотография leonix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TaPaKleonix,

каких блокировок?

На строки или на таблицы.
Например когда один пользователь пишет в таблицу, а другой ждёт когда освободиться таблица более 15 сек.
Какая это блокировка? Обычная блокировка :)
...
Рейтинг: 0 / 0
Как сделать оповещение в случае большого количества длит-ных блок-ок за последние полчаса?
    #39803173
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
leonix,

так sys.dm_exec_requests там и время и кто и как
...
Рейтинг: 0 / 0
Как сделать оповещение в случае большого количества длит-ных блок-ок за последние полчаса?
    #39803174
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вообще, праивльнее EE
копать в эту сторону
https://www.sqlskills.com/blogs/erin/capture-blocking-information-with-extended-events-and-the-blocked-process-report/


"более 15 сек" раз "в пол часа". Я думаю если всё так стоять будет, все лично прийдут :)
...
Рейтинг: 0 / 0
Как сделать оповещение в случае большого количества длит-ных блок-ок за последние полчаса?
    #39803176
Фотография leonix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если я обращусь sys.dm_exec_requests, это будет моментальный снимок. Если сделаю через 1 сек, то может картина не поменяется, будут теже блокировки.
Мне их надо накапливать за последний час например.
Пока не соображу как сделать.
...
Рейтинг: 0 / 0
Как сделать оповещение в случае большого количества длит-ных блок-ок за последние полчаса?
    #39803183
Фотография Критик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
leonix,

Делайте снимки каждые 15 секунд.
...
Рейтинг: 0 / 0
Как сделать оповещение в случае большого количества длит-ных блок-ок за последние полчаса?
    #39803188
Фотография leonix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Критикleonix,

Делайте снимки каждые 15 секунд.

Будут та же картина. Если я буду записывать данные о блокировках в БД, то
будут дублироваться одни и те же блокировки.
...
Рейтинг: 0 / 0
Как сделать оповещение в случае большого количества длит-ных блок-ок за последние полчаса?
    #39803192
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
leonixКритикleonix,

Делайте снимки каждые 15 секунд.

Будут та же картина. Если я буду записывать данные о блокировках в БД, то
будут дублироваться одни и те же блокировки.
merge по spId не предлагать? Что не так с EE?
...
Рейтинг: 0 / 0
Как сделать оповещение в случае большого количества длит-ных блок-ок за последние полчаса?
    #39803204
Фотография leonix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TaPaKleonixпропущено...


Будут та же картина. Если я буду записывать данные о блокировках в БД, то
будут дублироваться одни и те же блокировки.
merge по spId не предлагать? Что не так с EE?

Придётся загружать данные о блокировках и потом обрабатывать, удалять дубли.

EE недавно пробовал, даже тему тут создавал. Я не понял как EE отправлять по почте.
...
Рейтинг: 0 / 0
Как сделать оповещение в случае большого количества длит-ных блок-ок за последние полчаса?
    #39803207
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
leonixTaPaKпропущено...

merge по spId не предлагать? Что не так с EE?

Придётся загружать данные о блокировках и потом обрабатывать, удалять дубли.

EE недавно пробовал, даже тему тут создавал. Я не понял как EE отправлять по почте.
ключевое слово merge. Но если вы ничего не хотите делать, то да, волшебной кнопки нет.

авторЯ не понял как EE отправлять по почте.
и смех и грех...
...
Рейтинг: 0 / 0
Как сделать оповещение в случае большого количества длит-ных блок-ок за последние полчаса?
    #39803213
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Как сделать оповещение в случае большого количества длит-ных блок-ок за последние полчаса?
    #39803221
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Создайте алёрты на длительные транзакции и длительно выполняемые запросы. Обычно 2-3 часа подвисаний говорят о каких-то проблемах.
...
Рейтинг: 0 / 0
Как сделать оповещение в случае большого количества длит-ных блок-ок за последние полчаса?
    #39803752
Фотография PsyMisha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
leonix, если я, конечно, правильно понял вашу проблему - такой примитивный механизм подойдет?
1) Создайте почтовый профиль на сервере - .\Management --> Database Mail
2) Создайте сиквельный джоб на сервере, с периодичностью запуска раз в n-минут
3) В скрипте в секции бизнес-логики опишите то, что вы понимаете под запросом на поиск блокировок, тот самый статичный запрос, вывод которого вас устраивает, базовый пример от меня - в этой же секции
4) В джобе сделайте шаг с этим новым скриптом и подставьте ваши параметры в модуль отправки почты
5) Профит, не?

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
DECLARE @Some_Locks_Count AS INT

-- ##############
-- ВЛОЖИТЬ БИЗНЕС_ЛОГИКУ
SELECT @Some_Locks_Count = COUNT(*) FROM sys.dm_exec_requests
-- ##############

IF @Some_Locks_Count > 30 -- to amend
BEGIN
		EXEC msdb.dbo.sp_send_dbmail
		@profile_name = 'Default Mail Sender',
		@recipients = 'operator@domain.com',
		@subject = 'Lock amount exceeds the maximum!',
		@body = 'There is a number of issues with locks on the server. Please kindly check and do the needful',
		@from_address = 'admin@domain.com',
		@reply_to = 'NoReply@domain.com',
		@importance = 'High'

END
...
Рейтинг: 0 / 0
Как сделать оповещение в случае большого количества длит-ных блок-ок за последние полчаса?
    #39805584
Idol_111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
зачем все усложнять то? Все давно придумано:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
EXEC msdb.dbo.sp_add_alert @name=N'Blocking', 
		@enabled=1, 
		@delay_between_responses=300, 
		@include_event_description_in=1, 
		@performance_condition=N'SQLServer:General Statistics|Processes blocked||>|5', 
		@job_id=N'00000000-0000-0000-0000-000000000000'
GO
EXEC msdb.dbo.sp_add_notification @alert_name=N'Blocking', @operator_name=N'MS-SQL-Admins', @notification_method = 1
GO


предварительно установив BlockedProcessThreshold на 20.

Более чем достаточно для понимания того, что у тебя происходит на сервере.
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как сделать оповещение в случае большого количества длит-ных блок-ок за последние полчаса?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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