Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Найти и убить (неубиваемый процесс)  [new]
kkv
Member

Откуда: Москва
Сообщений: 18798
Иногда такое случается, когда kill не помогает. Причина невозможности кильнуть процесс весьма проста - сам процесс в этом случае находится за пределами сиквела. Банальный пример - что-то (да хоть тот же notepad или еще какую хрень) запустили через xp_cmdshell. А то, что запустили, то "зависло". Причин зависания миллион и две тележки. Но все эти причины лежат за пределами сиквела. Вопрос в следующем. Как найти этот самый pid операционной системы с помощью сиквела и убить уже именно его. После этого все сразу же заработает и всем будет большое счастье. Казалось бы, задача простейшая, но на практике эта задача решается, как правило, с помощью перезапуска службы сиквела. А это весьма мерзкий способ, надо сказать. Я по этому поводу спрашивал консультанта из микрософта, но там тоже обычные люди работают и далеко ни каждый из них гуру. Он ответил так - типа таких возможностей в сиквеле нет и нужно снимать дамп чтобы потом долго и мучительно его анализировать. Если вы видели дамп, то вы поймете одно - в этих адресах памяти весьма сложно разобраться. Не верю, блин! Должен быть способ.
13 апр 17, 00:37    [20396535]     Ответить | Цитировать Сообщить модератору
 Re: Найти и убить (неубиваемый процесс)  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
В случае xp_cmdshell берете и грохаете по порядку все процессы cmd.exe. В остальных случаях надо дропать какие-то другие процессы... по порядку.

А чтобы было по феншую, процессы за пределами сиквела средствами сиквела (да еще и в транзакции) лучше не запускать. Для этого есть всякие SSIS'ы.

Сообщение было отредактировано: 13 апр 17, 02:31
13 апр 17, 02:27    [20396578]     Ответить | Цитировать Сообщить модератору
 Re: Найти и убить (неубиваемый процесс)  [new]
kkv
Member

Откуда: Москва
Сообщений: 18798
Гавриленко Сергей Алексеевич
В случае xp_cmdshell берете и грохаете по порядку все процессы cmd.exe. В остальных случаях надо дропать какие-то другие процессы... по порядку.

А чтобы было по феншую, процессы за пределами сиквела средствами сиквела (да еще и в транзакции) лучше не запускать. Для этого есть всякие SSIS'ы.

xp_cmdchell - это просто для примера (описанный в литературе случай). Кто, что и как запускает - на это вряд ли можно как-то влиять, особенно в системе со сложной архитектурой. Вопрос был ни как предотвращать, а как уже исправлять сложившуюся ситуацию. Процесс А блокирует кучу других процессов, его прибивают и тут выясняется, что rollback будет идти вечно.
13 апр 17, 08:43    [20396784]     Ответить | Цитировать Сообщить модератору
 Re: Найти и убить (неубиваемый процесс)  [new]
Шыфл
Member

Откуда: Прага
Сообщений: 776
kkv
xp_cmdchell - это просто для примера (описанный в литературе случай). Кто, что и как запускает - на это вряд ли можно как-то влиять, особенно в системе со сложной архитектурой. Вопрос был ни как предотвращать, а как уже исправлять сложившуюся ситуацию. Процесс А блокирует кучу других процессов, его прибивают и тут выясняется, что rollback будет идти вечно.


Для этого и появился .Net и "управляемый" код, чтобы коммунизма не было.
13 апр 17, 10:40    [20397293]     Ответить | Цитировать Сообщить модератору
 Re: Найти и убить (неубиваемый процесс)  [new]
invm
Member

Откуда: Москва
Сообщений: 9836
declare @s varchar(8000) = 'wmic process get processid, parentprocessid, executablepath | find "' + cast(serverproperty('ProcessID') as varchar(10)) + '"';
exec xp_cmdshell @s;
13 апр 17, 10:52    [20397381]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить