Я создал задание агента SQL-сервера с несколькими шагами, которые нужно обрабатывать каждую неделю. Одним из них является сценарий PowerShell, который будет бросать следующее (неперехваченное) пользовательское исключение:Агент SQL-сервера, не сообщающий об ошибке из неперехваченного исключения в сценарии PowerShell
$endfile = Test-Path "C:\Temp\1_${loc}_${lastpayweek}.csv"
IF ($endfile -eq $true)
{
throw "target file already exists"
}
Теперь, когда это происходит, я могу видеть в истории сервера агента, что было брошено исключение, но шаг по-прежнему представлены как успех. Без отказа серверный агент не отправит электронное письмо с уведомлением, чтобы сообщить мне об ошибке.
Я зову скрипт PowerShell, как это:
powershell C:\scripts\rename_timesheet_export.ps1 -loc 3
Почему она сообщила, как успех?
Я изменил свое исполнение на попытки { PowerShell C: \ Scripts \ export_timesheet_csv.ps1 -loc 3 -locid 102 -ErrorAction ' Stop ' } catch { throw $ _ } и внутри скрипта, сразу после получения параметров командной строки, я выбрасываю исключение. Я получаю тот же сценарий, когда работа сообщает об успехе, но в истории отмечает, что произошло исключение. – defect833
Кажется странным, что вы вызываете powershell.exe на этапе работы sqlps? –
Я удалил вызов powershell.exe с начала инструкции выполнения, и он начал правильно сообщать об ошибках. Похоже, что он вызывал вызов powershell в вызове powershell (SQL job), и исключения не проходили полностью. – defect833