Запуск процесса из триггера - сомнительная практика. Ваши транзакции будут блокироваться, пока процесс не будет запущен и завершится. Кроме того, гарантируется, что процесс не сможет безопасно прочитать саму запись, из-за которой он был запущен, поскольку он заблокирован в транзакции, которая ожидает завершения процесса.
Правильный способ сделать это - обнаружить условие в триггере, поставить в очередь уведомление и сделать так, чтобы считыватель после фиксации отключил уведомление и запустил процесс. Все это можно сделать в Transact-SQL.
Обновление
Кстати, когда я говорю «все это выполнимо в Transact-SQL», я имею в виду компонент Service Broker и активация : триггер SEND sa для локальной службы, возможно, с описанием обновленный ключ элемента, соответствующий критериям, после фиксации сообщения активирует процедуру, активированная процедура читает сообщение и запускает xp_cmdshell, чтобы запустить инструмент с правильными параметрами. Активированная процедура имеет права на запуск xp_cmdshell, поскольку она правильно подписана . Инструмент запускается в течение нескольких миллисекунд после обновления, но в совершенно безопасном контексте, который не блокирует обновление / вставку / удаление.