Свойство процесса выполнения служб SSIS свойство StandardErrorVariable пусто - PullRequest
0 голосов
/ 24 октября 2018

У меня есть задача процесса выполнения служб SSIS, которая запускает скрипт Powershell, который я пытаюсь использовать в настраиваемой среде ведения журналов, которую я создаю.Все, что я исследовал в Интернете, говорит о том, что если я собираю StandardErrorVariable и StandardOutputVariable в переменных, я смогу использовать их для получения значимых сообщений об ошибках в пользовательской структуре ведения журнала, которую я создаю.Сценарий Powershell извлекает данные из конечной точки API и перемещает их в таблицу в SQL Server.В скрипте Powershell я изменил одно из имен в операторе вставки на столбец, который не существует, чтобы проверить, как выглядят сообщения об ошибках в этих свойствах.StandardOutputVariable возвращает то, что я ожидал, но StandardErrorVariable пусто.Может кто-нибудь помочь мне выяснить, почему StandardErrorVariable пуст?

1 Ответ

0 голосов
/ 24 октября 2018

Это, вероятно, из-за слишком большого количества оболочек.Плюс SSIS сама по себе довольно глючная.В качестве возможного обходного пути вы можете попытаться перенаправить поток ошибок на стандартный вывод, возможно, он появится в StandardOutputVariable.Изнутри powershell добавьте *> & 1, хотя вам может понадобиться сначала обернуть ваш скрипт как блок скриптов:

&{

#some script

Write-Output "Hello"

Write-Error "Error occured"

} *>&1  # * will move all streams to stdout

Если вы назовете скрипт из batch / cmd, добавьте 2> & 1 в конце (* не будетработа в cmd, 2 - поток ошибок)

> powershell .\yourscript.ps1 2>&1

Кроме того, вы можете сделать что-то похожее, обернув ваш скрипт с помощью try / catch и напечатав ошибку в catch с помощью Write-Host.Если вам действительно нужно хранить ошибки отдельно, а другого решения нет, возможно, перенаправьте их в файл и затем прочитайте оттуда (добавив 2> error.log)

...