Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как получить блокирующий запрос в blocked process report?
|
|||
|---|---|---|---|
|
#18+
Microsoft SQL Server 2012 Express SP4 (64-bit) Кратко: Экспериментирую в профайлере с событием "blocked process report" с целью получить тексты запросов заблокированного и блокирующего. Первый получаю, а на месте второго выводится команда следующая за запросом, который фактически был заблокирован. Подробно: - Настраиваю базу для получения события "blocked process report" Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. - В профайлере включаю отслеживание события "blocked process report" - Сначала в первом сеансе, потом втором выполняю следующий запрос: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. - Как я и хотел, второй сеанс ожидает завершения первого, т.к. транзакция в первом не закрыта. - Профайлер показывает это ожидание событием "blocked process report", в котором следующее (см ниже под спойлером) Вопрос: Почему в поле заблокированного запроса выводится print, а не UPDATE? <blocked-process-report monitorLoop="27156"> <blocked-process> <process id="process16e342558" taskpriority="0" logused="0" waitresource="KEY: 5:72057594039369728 (dbff0d4a5b42)" waittime="9953" ownerId="620453" transactionname="user_transaction" lasttranstarted="2019-05-04T13:39:29.430" XDES="0x172557368" lockMode="RangeX-X" schedulerid="1" kpid="8444" status="suspended" spid="61" sbid="0" ecid="0" priority="0" trancount="2" lastbatchstarted="2019-05-04T13:39:29.430" lastbatchcompleted="2019-05-04T13:39:29.430" lastattention="1900-01-01T00:00:00.430" clientapp="Среда Microsoft SQL Server Management Studio - запрос" hostname="" hostpid="3632" loginname="\User" isolationlevel="read committed (2)" xactid="620453" currentdb="5" lockTimeout="4294967295" clientoption1="671090784" clientoption2="390200"> <executionStack> <frame line="2" stmtstart="4" sqlhandle="0x020000005bbf481b1f8de1209b28a9bcf1bc548cc34bbaa20000000000000000000000000000000000000000"/> </executionStack> <inputbuf> UPDATE t1 SET c3 = 'a' from [test1].[dbo].[t1] as t1 WITH(SERIALIZABLE) WHERE c4 = 100 </inputbuf> </process> </blocked-process> <blocking-process> <process status="sleeping" spid="66" sbid="0" ecid="0" priority="0" trancount="1" lastbatchstarted="2019-05-04T13:39:26.973" lastbatchcompleted="2019-05-04T13:39:26.973" lastattention="1900-01-01T00:00:00.973" clientapp="Среда Microsoft SQL Server Management Studio - запрос" hostname="" hostpid="7912" loginname="\User" isolationlevel="read committed (2)" xactid="620446" currentdb="1" lockTimeout="4294967295" clientoption1="671090784" clientoption2="390200"> <executionStack/> <inputbuf> print 123 </inputbuf> </process> </blocking-process> </blocked-process-report> ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2019, 10:30 |
|
||
|
Как получить блокирующий запрос в blocked process report?
|
|||
|---|---|---|---|
|
#18+
авторВопрос: Почему в поле заблокированного запроса выводится print, а не UPDATE? Опечатался. Верно так: Почему в поле блокирующего запроса выводится print, а не UPDATE? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2019, 11:25 |
|
||
|
Как получить блокирующий запрос в blocked process report?
|
|||
|---|---|---|---|
|
#18+
vi0, потому что inputbuff показывает инструкцию последнего батча сессии а не инстуркцию которая наложила блокировку. закоментите go между update и print получите их обе в inputbuff ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2019, 15:51 |
|
||
|
Как получить блокирующий запрос в blocked process report?
|
|||
|---|---|---|---|
|
#18+
felix_ff, а к чему такая логика, в контексте расследования блокировок? где можно прочитать про это? Дело в том что я не могу повлиять на текст запросов, т.к. его формирует сервер приложений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2019, 16:08 |
|
||
|
Как получить блокирующий запрос в blocked process report?
|
|||
|---|---|---|---|
|
#18+
vi0а к чему такая логика, в контексте расследования блокировок?Считаете, что сервер обязан хранить тектсы всех выполненных в транзакции батчей до ее завершения? Плюс для каждой блокировки хранить ссылку на батч, который ее наложил? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2019, 17:10 |
|
||
|
Как получить блокирующий запрос в blocked process report?
|
|||
|---|---|---|---|
|
#18+
invmvi0а к чему такая логика, в контексте расследования блокировок?Считаете, что сервер обязан хранить тектсы всех выполненных в транзакции батчей до ее завершения? Плюс для каждой блокировки хранить ссылку на батч, который ее наложил? даже и не знаю просто изучаю инструмент и до сих пор думал, что я чего то недонастроил ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2019, 17:22 |
|
||
|
Как получить блокирующий запрос в blocked process report?
|
|||
|---|---|---|---|
|
#18+
vi0, Этот инстумент предназначен только для генерации уведомлений о том, что сессия S1 была заблокирована сессией S2. К тому же, невозможно гарантированно выявить блокирующий запрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2019, 17:46 |
|
||
|
Как получить блокирующий запрос в blocked process report?
|
|||
|---|---|---|---|
|
#18+
invmvi0, Этот инстумент предназначен только для генерации уведомлений о том, что сессия S1 была заблокирована сессией S2. К тому же, невозможно гарантированно выявить блокирующий запрос. я бы не сказал, что только, с учетом того сколько полей в этом отчете ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2019, 18:10 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=39809652&tid=1687872]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
37ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
| others: | 283ms |
| total: | 400ms |

| 0 / 0 |
