Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как отловить таймаут клиента в процедуре на сервере
|
|||
|---|---|---|---|
|
#18+
Есть довольно объемная хранимка на сервере, выполнение которой клиент может не дождаться из-за таймаута. Возможно ли отловить данное событие в процедуре? 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) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2019, 12:16 |
|
||
|
Как отловить таймаут клиента в процедуре на сервере
|
|||
|---|---|---|---|
|
#18+
Нет, конечно. Почта России тоже не в курсе, что адресат в некоторых случаях умирает от старости до того, как они доставят ему что-либо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2019, 12:27 |
|
||
|
Как отловить таймаут клиента в процедуре на сервере
|
|||
|---|---|---|---|
|
#18+
KRS544, ихо таймаут отправляет rollback на сервер ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2019, 12:34 |
|
||
|
Как отловить таймаут клиента в процедуре на сервере
|
|||
|---|---|---|---|
|
#18+
т.е. в начале процедуры выставлять какой либо флаг в таблице и смотреть откатятся изменения или нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2019, 12:41 |
|
||
|
Как отловить таймаут клиента в процедуре на сервере
|
|||
|---|---|---|---|
|
#18+
KRS544, непонятен смысл постановки задачи. Ничего не надо отлавливать на самом деле. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2019, 12:45 |
|
||
|
Как отловить таймаут клиента в процедуре на сервере
|
|||
|---|---|---|---|
|
#18+
TaPaKихо таймаут отправляет rollback на серверНет. Будет ли откат зависит от значения xact_abort. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2019, 12:49 |
|
||
|
Как отловить таймаут клиента в процедуре на сервере
|
|||
|---|---|---|---|
|
#18+
Смысл в том, что бы оперативно реагировать на проблемы, возникающие в процессе работы клиентов. Проще собирать данные с сервера, а не собирать логи с клиентов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2019, 12:50 |
|
||
|
Как отловить таймаут клиента в процедуре на сервере
|
|||
|---|---|---|---|
|
#18+
invm, по моему разумению при таймауте выполнения клиент должен отключить сеанс. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2019, 12:52 |
|
||
|
Как отловить таймаут клиента в процедуре на сервере
|
|||
|---|---|---|---|
|
#18+
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. Процедура выполняется В транзакции - запись в табличку в КОНЦЕ. Но нипонятно, как отследить факт запуска? Рази только вести протокол о намерениях: т.е. запускать вне транзакции ДОП. процедуру, которая зарегистрирует намерение запустить нужную, а нужная - сотрет или пометит как исполненное. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2019, 12:53 |
|
||
|
Как отловить таймаут клиента в процедуре на сервере
|
|||
|---|---|---|---|
|
#18+
aleks222, Откройте для себя поведение табличных переменных в транзациях, прежде чем рекомендовать xp_cmdshell ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2019, 12:59 |
|
||
|
Как отловить таймаут клиента в процедуре на сервере
|
|||
|---|---|---|---|
|
#18+
KRS544, нет, сервер баз данных над использовать по назначению, а информацию о дисконнектах собирать либо на слое приложений, если такой есть, либо на самих клиентах, например, через журнал приложения в Windows. Журналы могут быть переданы на некий агрегатор и эта технология существует в Windows. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2019, 13:04 |
|
||
|
Как отловить таймаут клиента в процедуре на сервере
|
|||
|---|---|---|---|
|
#18+
Владислав Колосов, это демагогия, случаи разные бывают ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2019, 13:09 |
|
||
|
Как отловить таймаут клиента в процедуре на сервере
|
|||
|---|---|---|---|
|
#18+
invmTaPaKихо таймаут отправляет rollback на серверНет. Будет ли откат зависит от значения xact_abort. да, правильно, Грубо говоря отправляется "Stop" как в ssms. Возникает событие Attention и при обработке уже всё зависит от параметров xact_abort. Можно ловить через EE Attention https://www.red-gate.com/simple-talk/blogs/identifying-client-timeouts/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2019, 13:09 |
|
||
|
Как отловить таймаут клиента в процедуре на сервере
|
|||
|---|---|---|---|
|
#18+
Критик, можно подробнее, как использовать табличные переменные в моем случае? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2019, 13:10 |
|
||
|
Как отловить таймаут клиента в процедуре на сервере
|
|||
|---|---|---|---|
|
#18+
KRS544как использовать табличные переменные в моем случае?В вашем случае ничто не поможет. Ибо при клиентском тайм-ауте (или отмене) прекращается выполнение текущего пакета. Т.е. узнать в самой процедуре, что ее вполнение было прервано невозможно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2019, 13:30 |
|
||
|
Как отловить таймаут клиента в процедуре на сервере
|
|||
|---|---|---|---|
|
#18+
Критикaleks222, Откройте для себя поведение табличных переменных в транзациях, прежде чем рекомендовать xp_cmdshell Да я в курсе поведения. Тока я не в курсе как оно поможет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2019, 13:35 |
|
||
|
Как отловить таймаут клиента в процедуре на сервере
|
|||
|---|---|---|---|
|
#18+
invmKRS544как использовать табличные переменные в моем случае?В вашем случае ничто не поможет. Ибо при клиентском тайм-ауте (или отмене) прекращается выполнение текущего пакета. Т.е. узнать в самой процедуре, что ее вполнение было прервано невозможно. Да, я это понял. Решения TaPaK и aleks222 вполне устраивают, спасибо. Просто не могу понять как можно использовать @table ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2019, 13:44 |
|
||
|
Как отловить таймаут клиента в процедуре на сервере
|
|||
|---|---|---|---|
|
#18+
KRS544, в вашем, наверное, никак ) просто я прочитал рекомендацию вне контекста ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2019, 13:50 |
|
||
|
Как отловить таймаут клиента в процедуре на сервере
|
|||
|---|---|---|---|
|
#18+
KRS544Просто не могу понять как можно использовать @tableДля ваших целей никак. Лучше расскажите зачем потребовалось отлавливать клиентский тайм-аут в процедуре. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2019, 13:54 |
|
||
|
Как отловить таймаут клиента в процедуре на сервере
|
|||
|---|---|---|---|
|
#18+
invm, если интересно... каждое выполнение процедуры логируется (что то типа билинга), если не отлавливать таймауты, то данные на клиенте и сервере не сойдутся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2019, 14:05 |
|
||
|
Как отловить таймаут клиента в процедуре на сервере
|
|||
|---|---|---|---|
|
#18+
KRS544invm, если интересно... каждое выполнение процедуры логируется (что то типа билинга), если не отлавливать таймауты, то данные на клиенте и сервере не сойдутся. делать всё это с клиента не вызывает никаких затруднений ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2019, 14:10 |
|
||
|
Как отловить таймаут клиента в процедуре на сервере
|
|||
|---|---|---|---|
|
#18+
хотя как получается автор данные на клиенте и сервере не сойдутся. не ясно. Откатывайте на сервере и на клиенте(?) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2019, 14:13 |
|
||
|
Как отловить таймаут клиента в процедуре на сервере
|
|||
|---|---|---|---|
|
#18+
KRS544каждое выполнение процедуры логируетсяВызов процедуры или именно успешное выполнение? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2019, 14:19 |
|
||
|
Как отловить таймаут клиента в процедуре на сервере
|
|||
|---|---|---|---|
|
#18+
invm, получается вызов. За клиент я не отвечаю, поэтому сложно говорить, что там происходит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2019, 15:03 |
|
||
|
Как отловить таймаут клиента в процедуре на сервере
|
|||
|---|---|---|---|
|
#18+
KRS544, Если вызов, то проще всего выполнением логирующей процедуры через self linked server с remote proc transaction promotion = false ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2019, 15:19 |
|
||
|
Как отловить таймаут клиента в процедуре на сервере
|
|||
|---|---|---|---|
|
#18+
KRS544, Вы лихо выносите оценки собеседнику даже не понимая, о чем идет речь. Контроль таймаутов возможен только со стороны инициатора отключения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2019, 15:43 |
|
||
|
Как отловить таймаут клиента в процедуре на сервере
|
|||
|---|---|---|---|
|
#18+
invmKRS544, Если вызов, то проще всего выполнением логирующей процедуры через self linked server с remote proc transaction promotion = false Нафига эти сложности? Судя по всему, тредстартеру на так уж важно, чтобы процедура отработала "сей секунд". "+-Полчаса" ничего не решают. В этом варианте, правильнее записывать параметры вызова и фсе. После чего асинхронно выполнять процедуру Агентом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2019, 16:24 |
|
||
|
Как отловить таймаут клиента в процедуре на сервере
|
|||
|---|---|---|---|
|
#18+
Владислав Колосов, уже выяснили что это не так, хотя бы используя Extended Event. Никакие оценки никому не выносил, а разговоры типа - зачем вам это нужно делать, делайте это на клиенте, или, цитирую "Ничего не надо отлавливать на самом деле." считаю демагогией. Вы ведь не в курсе, что клиента делает сторонний вендор, каждая доработка стоит денег, не забываем также про подготовку ФТ, ТЗ, закладку бюджета и всей прочей бюрократии. И соотнося все это с решением, которое предложил aleks222, как думаете, что проще сделать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2019, 16:35 |
|
||
|
Как отловить таймаут клиента в процедуре на сервере
|
|||
|---|---|---|---|
|
#18+
KRS544, проще, в начале и в конце писать состояние, всё что с состоянием != конечному было с ошибкой ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2019, 16:38 |
|
||
|
Как отловить таймаут клиента в процедуре на сервере
|
|||
|---|---|---|---|
|
#18+
TaPaK, так в итоге и решили сделать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2019, 16:40 |
|
||
|
Как отловить таймаут клиента в процедуре на сервере
|
|||
|---|---|---|---|
|
#18+
aleks222Нафига эти сложности?Это очевидно - что бы залогировать вызов, даже в случае отката транзакции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2019, 16:40 |
|
||
|
Как отловить таймаут клиента в процедуре на сервере
|
|||
|---|---|---|---|
|
#18+
KRS544, Можно тудаже писать spid и параллельно логировать таймауты, потом получать причину ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2019, 16:43 |
|
||
|
Как отловить таймаут клиента в процедуре на сервере
|
|||
|---|---|---|---|
|
#18+
TaPaKKRS544, проще, в начале и в конце писать состояние, всё что с состоянием != конечному было с ошибкойЕсли нет контроля над клиенским приложением, то никто не остановит их обернуть вызов процедуры в транзакцию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2019, 21:16 |
|
||
|
Как отловить таймаут клиента в процедуре на сервере
|
|||
|---|---|---|---|
|
#18+
TaPaKinvmпропущено... Нет. Будет ли откат зависит от значения xact_abort. да, правильно, Грубо говоря отправляется "Stop" как в ssms. Возникает событие Attention и при обработке уже всё зависит от параметров xact_abort. Можно ловить через EE Attention https://www.red-gate.com/simple-talk/blogs/identifying-client-timeouts/ Это хороший способ, но есть одно но, некоторые операции даже при успешном выполнении почему то вызывают Attention. Например BULK INSERT на определенных версиях .NET. Впринципе их легко отфильтровать учитывая что реальные таймауты обычно будут по длительности около 30 секунд. Еще вариант - обычный trace с фильтром "error <> 0" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2019, 21:20 |
|
||
|
Как отловить таймаут клиента в процедуре на сервере
|
|||
|---|---|---|---|
|
#18+
Таймаут возникает в высокоуровневом протоколе на стороне инициатора соединения, на транспортном уровне информация такого рода не передаётся. Можно только гадать на стороне слушателя, но никогда не скажешь наверняка - 30 секунд это что, например? Уборщица провода выдернула, таймаут или электропитание выключено? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2019, 21:32 |
|
||
|
|

start [/forum/topic.php?all=1&fid=46&tid=1688390]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
54ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
| others: | 268ms |
| total: | 417ms |

| 0 / 0 |
