powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как отловить таймаут клиента в процедуре на сервере
25 сообщений из 35, страница 1 из 2
Как отловить таймаут клиента в процедуре на сервере
    #39764854
KRS544
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть довольно объемная хранимка на сервере, выполнение которой клиент может не дождаться из-за таймаута.
Возможно ли отловить данное событие в процедуре?

Microsoft SQL Server 2016 (SP1-CU3) (KB4019916) - 13.0.4435.0 (X64) Apr 27 2017 17:36:12 Copyright (c) Microsoft Corporation Enterprise Edition (64-bit) on Windows Server 2016 Standard 6.3 <X64> (Build 14393: ) (Hypervisor)
...
Рейтинг: 0 / 0
Как отловить таймаут клиента в процедуре на сервере
    #39764865
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет, конечно. Почта России тоже не в курсе, что адресат в некоторых случаях умирает от старости до того, как они доставят ему что-либо.
...
Рейтинг: 0 / 0
Как отловить таймаут клиента в процедуре на сервере
    #39764872
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KRS544,

ихо таймаут отправляет rollback на сервер
...
Рейтинг: 0 / 0
Как отловить таймаут клиента в процедуре на сервере
    #39764877
KRS544
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
т.е. в начале процедуры выставлять какой либо флаг в таблице и смотреть откатятся изменения или нет.
...
Рейтинг: 0 / 0
Как отловить таймаут клиента в процедуре на сервере
    #39764884
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KRS544,

непонятен смысл постановки задачи. Ничего не надо отлавливать на самом деле.
...
Рейтинг: 0 / 0
Как отловить таймаут клиента в процедуре на сервере
    #39764892
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TaPaKихо таймаут отправляет rollback на серверНет.
Будет ли откат зависит от значения xact_abort.
...
Рейтинг: 0 / 0
Как отловить таймаут клиента в процедуре на сервере
    #39764893
KRS544
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Смысл в том, что бы оперативно реагировать на проблемы, возникающие в процессе работы клиентов.
Проще собирать данные с сервера, а не собирать логи с клиентов.
...
Рейтинг: 0 / 0
Как отловить таймаут клиента в процедуре на сервере
    #39764896
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
invm,

по моему разумению при таймауте выполнения клиент должен отключить сеанс.
...
Рейтинг: 0 / 0
Как отловить таймаут клиента в процедуре на сервере
    #39764898
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KRS544Есть довольно объемная хранимка на сервере, выполнение которой клиент может не дождаться из-за таймаута.
Возможно ли отловить данное событие в процедуре?

Microsoft SQL Server 2016 (SP1-CU3) (KB4019916) - 13.0.4435.0 (X64) Apr 27 2017 17:36:12 Copyright (c) Microsoft Corporation Enterprise Edition (64-bit) on Windows Server 2016 Standard 6.3 <X64> (Build 14393: ) (Hypervisor)

1. Процедура выполняется ВНЕ транзакции - можно. Запись в табличку в начале и стирание записи в конце процедуры. Проверка оставшихся записей.

2. Процедура выполняется В транзакции и вы готовы слегка поступиться быстродействием. CRL или xp_cmdshell - запись в табличку в начале и стирание записи в конце процедуры.

2. Процедура выполняется В транзакции - запись в табличку в КОНЦЕ. Но нипонятно, как отследить факт запуска? Рази только вести протокол о намерениях: т.е. запускать вне транзакции ДОП. процедуру, которая зарегистрирует намерение запустить нужную, а нужная - сотрет или пометит как исполненное.
...
Рейтинг: 0 / 0
Как отловить таймаут клиента в процедуре на сервере
    #39764901
Фотография Критик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleks222,

Откройте для себя поведение табличных переменных в транзациях, прежде чем рекомендовать xp_cmdshell
...
Рейтинг: 0 / 0
Как отловить таймаут клиента в процедуре на сервере
    #39764906
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KRS544,

нет, сервер баз данных над использовать по назначению, а информацию о дисконнектах собирать либо на слое приложений, если такой есть, либо на самих клиентах, например, через журнал приложения в Windows.

Журналы могут быть переданы на некий агрегатор и эта технология существует в Windows.
...
Рейтинг: 0 / 0
Как отловить таймаут клиента в процедуре на сервере
    #39764912
KRS544
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосов, это демагогия, случаи разные бывают
...
Рейтинг: 0 / 0
Как отловить таймаут клиента в процедуре на сервере
    #39764913
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
invmTaPaKихо таймаут отправляет rollback на серверНет.
Будет ли откат зависит от значения xact_abort.
да, правильно, Грубо говоря отправляется "Stop" как в ssms. Возникает событие Attention и при обработке уже всё зависит от
параметров xact_abort.
Можно ловить через EE Attention https://www.red-gate.com/simple-talk/blogs/identifying-client-timeouts/
...
Рейтинг: 0 / 0
Как отловить таймаут клиента в процедуре на сервере
    #39764916
KRS544
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Критик, можно подробнее, как использовать табличные переменные в моем случае?
...
Рейтинг: 0 / 0
Как отловить таймаут клиента в процедуре на сервере
    #39764938
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KRS544как использовать табличные переменные в моем случае?В вашем случае ничто не поможет.
Ибо при клиентском тайм-ауте (или отмене) прекращается выполнение текущего пакета. Т.е. узнать в самой процедуре, что ее вполнение было прервано невозможно.
...
Рейтинг: 0 / 0
Как отловить таймаут клиента в процедуре на сервере
    #39764940
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Критикaleks222,

Откройте для себя поведение табличных переменных в транзациях, прежде чем рекомендовать xp_cmdshell

Да я в курсе поведения.
Тока я не в курсе как оно поможет?
...
Рейтинг: 0 / 0
Как отловить таймаут клиента в процедуре на сервере
    #39764951
KRS544
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
invmKRS544как использовать табличные переменные в моем случае?В вашем случае ничто не поможет.
Ибо при клиентском тайм-ауте (или отмене) прекращается выполнение текущего пакета. Т.е. узнать в самой процедуре, что ее вполнение было прервано невозможно.
Да, я это понял. Решения TaPaK и aleks222 вполне устраивают, спасибо.
Просто не могу понять как можно использовать @table
...
Рейтинг: 0 / 0
Как отловить таймаут клиента в процедуре на сервере
    #39764957
Фотография Критик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KRS544,

в вашем, наверное, никак )
просто я прочитал рекомендацию вне контекста
...
Рейтинг: 0 / 0
Как отловить таймаут клиента в процедуре на сервере
    #39764960
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KRS544Просто не могу понять как можно использовать @tableДля ваших целей никак.

Лучше расскажите зачем потребовалось отлавливать клиентский тайм-аут в процедуре.
...
Рейтинг: 0 / 0
Как отловить таймаут клиента в процедуре на сервере
    #39764972
KRS544
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
invm, если интересно... каждое выполнение процедуры логируется (что то типа билинга), если не отлавливать таймауты, то данные на клиенте и сервере не сойдутся.
...
Рейтинг: 0 / 0
Как отловить таймаут клиента в процедуре на сервере
    #39764976
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KRS544invm, если интересно... каждое выполнение процедуры логируется (что то типа билинга), если не отлавливать таймауты, то данные на клиенте и сервере не сойдутся.
делать всё это с клиента не вызывает никаких затруднений
...
Рейтинг: 0 / 0
Как отловить таймаут клиента в процедуре на сервере
    #39764979
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хотя как получается
автор данные на клиенте и сервере не сойдутся.
не ясно. Откатывайте на сервере и на клиенте(?)
...
Рейтинг: 0 / 0
Как отловить таймаут клиента в процедуре на сервере
    #39764984
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KRS544каждое выполнение процедуры логируетсяВызов процедуры или именно успешное выполнение?
...
Рейтинг: 0 / 0
Как отловить таймаут клиента в процедуре на сервере
    #39765011
KRS544
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
invm, получается вызов. За клиент я не отвечаю, поэтому сложно говорить, что там происходит.
...
Рейтинг: 0 / 0
Как отловить таймаут клиента в процедуре на сервере
    #39765023
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KRS544,

Если вызов, то проще всего выполнением логирующей процедуры через self linked server с remote proc transaction promotion = false
...
Рейтинг: 0 / 0
25 сообщений из 35, страница 1 из 2
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как отловить таймаут клиента в процедуре на сервере
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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