Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как правильно запустить xp_cmdshell в курсоре?
|
|||
|---|---|---|---|
|
#18+
Доброго дня всем! Есть курсор, в котором запускается xp_cmdshell (вызов программы, которая выполняет некие действия и записывает информацию в таблицу - журнал). Смотрю таблицу и вижу, что момент запуска программы опережает момент предыдущего окончания: line Action duration dateBegin RequestSendTime RequestResponceTimeline: 1 Action duration: dateBegin=09.10.2019 12:29:15 RequestSendTime =09.10.2019 12:29:15 RequestResponceTime =09.10.2019 12:29:15line: 2 Action duration: dateBegin=09.10.2019 12:29:15 RequestSendTime =09.10.2019 12:29:16 RequestResponceTime =09.10.2019 12:29:17line: 3 Action duration: dateBegin=09.10.2019 12:29:15 RequestSendTime =09.10.2019 12:29:16 RequestResponceTime =09.10.2019 12:29:17line: 4 Action duration: dateBegin=09.10.2019 12:29:15 RequestSendTime =09.10.2019 12:29:16 RequestResponceTime =09.10.2019 12:29:17line: 5 Action duration: dateBegin=09.10.2019 12:29:17 RequestSendTime =09.10.2019 12:29:18 RequestResponceTime =09.10.2019 12:29:18line: 6 Action duration: dateBegin=09.10.2019 12:29:17 RequestSendTime =09.10.2019 12:29:18 RequestResponceTime =09.10.2019 12:29:18line: 7 Action duration: dateBegin=09.10.2019 12:29:18 RequestSendTime =09.10.2019 12:29:19 RequestResponceTime =09.10.2019 12:29:19line: 8 Action duration: dateBegin=09.10.2019 12:29:18 RequestSendTime =09.10.2019 12:29:19 RequestResponceTime =09.10.2019 12:29:19line: 9 Action duration: dateBegin=09.10.2019 12:29:19 RequestSendTime =09.10.2019 12:29:19 RequestResponceTime =09.10.2019 12:29:20line:10 Action duration: dateBegin=09.10.2019 12:29:19 RequestSendTime =09.10.2019 12:29:19 RequestResponceTime =09.10.2019 12:29:20 Т.е. В Line 3 и 4 записано, что начало выполнения программы для соответствующих итераций (12:29:15) началось раньше, чем закончилось исполнение программы на шаге 2 (12:29:17). Обработка для Line 6 началась раньше чем закончилась обработка Line 5. И т.п. То есть получается множественный (я бы НЕ сказал многопоточный) одновременный запуск одного и того же внешнего приложения из курсора . Где про это можно прочитать? И как с этим бороться? Правильно ли будет использовать задержку, например, на 3 секунды: WAITFOR DELAY '00:00:03'; ? -------------------------- Microsoft SQL Server 2012 - 11.0.5058.0 (X64) May 14 2014 18:34:29 Copyright (c) Microsoft Corporation Standard Edition (64-bit) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2019, 13:12 |
|
||
|
Как правильно запустить xp_cmdshell в курсоре?
|
|||
|---|---|---|---|
|
#18+
SIMPLicity_Доброго дня всем! Есть курсор, в котором запускается xp_cmdshell (вызов программы, которая выполняет некие действия и записывает информацию в таблицу - журнал). Смотрю таблицу и вижу, что момент запуска программы опережает момент предыдущего окончания: line Action duration dateBegin RequestSendTime RequestResponceTimeline: 1 Action duration: dateBegin=09.10.2019 12:29:15 RequestSendTime =09.10.2019 12:29:15 RequestResponceTime =09.10.2019 12:29:15line: 2 Action duration: dateBegin=09.10.2019 12:29:15 RequestSendTime =09.10.2019 12:29:16 RequestResponceTime =09.10.2019 12:29:17line: 3 Action duration: dateBegin=09.10.2019 12:29:15 RequestSendTime =09.10.2019 12:29:16 RequestResponceTime =09.10.2019 12:29:17line: 4 Action duration: dateBegin=09.10.2019 12:29:15 RequestSendTime =09.10.2019 12:29:16 RequestResponceTime =09.10.2019 12:29:17line: 5 Action duration: dateBegin=09.10.2019 12:29:17 RequestSendTime =09.10.2019 12:29:18 RequestResponceTime =09.10.2019 12:29:18line: 6 Action duration: dateBegin=09.10.2019 12:29:17 RequestSendTime =09.10.2019 12:29:18 RequestResponceTime =09.10.2019 12:29:18line: 7 Action duration: dateBegin=09.10.2019 12:29:18 RequestSendTime =09.10.2019 12:29:19 RequestResponceTime =09.10.2019 12:29:19line: 8 Action duration: dateBegin=09.10.2019 12:29:18 RequestSendTime =09.10.2019 12:29:19 RequestResponceTime =09.10.2019 12:29:19line: 9 Action duration: dateBegin=09.10.2019 12:29:19 RequestSendTime =09.10.2019 12:29:19 RequestResponceTime =09.10.2019 12:29:20line:10 Action duration: dateBegin=09.10.2019 12:29:19 RequestSendTime =09.10.2019 12:29:19 RequestResponceTime =09.10.2019 12:29:20 Т.е. В Line 3 и 4 записано, что начало выполнения программы для соответствующих итераций (12:29:15) началось раньше, чем закончилось исполнение программы на шаге 2 (12:29:17). Обработка для Line 6 началась раньше чем закончилась обработка Line 5. И т.п. То есть получается множественный (я бы НЕ сказал многопоточный) одновременный запуск одного и того же внешнего приложения из курсора . Где про это можно прочитать? И как с этим бороться? Правильно ли будет использовать задержку, например, на 3 секунды: WAITFOR DELAY '00:00:03'; ? -------------------------- Microsoft SQL Server 2012 - 11.0.5058.0 (X64) May 14 2014 18:34:29 Copyright (c) Microsoft Corporation Standard Edition (64-bit) xp_cmdshell - синхронный xp_cmdshell работает синхронно. Управление не возвращается участнику до завершения команды ядра. Либо ошибка в заполнении вашего лога Либо ваш код выполняется в нескольких сессиях ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2019, 13:17 |
|
||
|
Как правильно запустить xp_cmdshell в курсоре?
|
|||
|---|---|---|---|
|
#18+
А, часом, там не xp_cmdshell 'start ...' написано? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2019, 13:18 |
|
||
|
Как правильно запустить xp_cmdshell в курсоре?
|
|||
|---|---|---|---|
|
#18+
msLex, маловероятно. В лог фиксируется время запуска, время отправки запроса и время получения ответа от сервера. Эти данные вспомогательная программа сама кидает в лог (выполняется UPDATE таблицы лога с привязкой к полю, которое является первичным ключом этой таблицы). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2019, 13:26 |
|
||
|
Как правильно запустить xp_cmdshell в курсоре?
|
|||
|---|---|---|---|
|
#18+
Гавриленко Сергей АлексеевичА, часом, там не xp_cmdshell 'start ...' написано? нет : Код: sql 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2019, 13:29 |
|
||
|
Как правильно запустить xp_cmdshell в курсоре?
|
|||
|---|---|---|---|
|
#18+
SIMPLicity_Гавриленко Сергей АлексеевичА, часом, там не xp_cmdshell 'start ...' написано? нет : Код: sql 1. 2. Добавьте логирование в TSQL скрипт (обычный insert getdate() + @@spid + параметры до и после xp_cmdshell), и все сразу станет ясно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2019, 13:35 |
|
||
|
Как правильно запустить xp_cmdshell в курсоре?
|
|||
|---|---|---|---|
|
#18+
SIMPLicity_, это может быть из-за ошибки округления времени при записи в журнал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2019, 13:35 |
|
||
|
Как правильно запустить xp_cmdshell в курсоре?
|
|||
|---|---|---|---|
|
#18+
SIMPLicity_, используйте тип datetime2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2019, 13:36 |
|
||
|
|

start [/forum/topic.php?fid=46&gotonew=1&tid=1687175]: |
0ms |
get settings: |
10ms |
get forum list: |
21ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
193ms |
get topic data: |
13ms |
get first new msg: |
8ms |
get forum data: |
3ms |
get page messages: |
67ms |
get tp. blocked users: |
2ms |
| others: | 260ms |
| total: | 585ms |

| 0 / 0 |
