Некоторое время назад один из моих коллег разместил несколько статей по использованию SFTP с авторизацией по ключам в среде Windows.
Как показала практика, решение работоспособно, но имеет некоторые особенности, и требует внимания к поведению некоторых модулей MS SQL SERVER .
Напомню, что для монтирования диска используется
При подобном методе запуска нужно понимать, что исполнение кода будет происходить ВНЕ инстанса MS SQL, в отдельном окне. Поведение системы аналогично случаю, когда мы просто запустили sqlps.exe и далее пытаемся выполнить код.
Это приводит к тому, что самостоятельно задание в
Для этого используется процедура
[Environment]::Exit(0)
в конце выполняемого скрипта. Попытки использовать exit или Exit-PSHostProcess успеха не имели.
Но и это еще не все. Даже при принудительном завершении процесса, ИНОГДА (причины и влияние внешних условий неясны) могут наблюдаться сбои при работе SFTP - например, sqlps.exe отказывается завершаться после отработки скрипта и остается висеть в системе, или же смонтированный диск оказывается недоступен, хотя и отображается корректно... и прочие трудноуловимые глюки подобного рода.
Для борьбы с подобным был разработан небольшой workaround
1) в task manager завершить процессы sshfs-win, sshfs, ssh и возможно sqlps.exe(при наличии)
2) запустить задание [имя задания в MS SQL SERVER] , убедиться что оно в статусе "выполняется"
3) вручную завершить процесс sqlps.exe, что приведет к неуспешному завершению задания MS SQL
4) заново запустить [имя задания в MS SQL SERVER] , убедиться что оно отработало и завершилось корректно, а sqlps.exe выгрузился
После вышеуказанных действий обычно диск монтируется успешно, лишних процессов в памяти нет, и все работает штатно. Однако еще раз отмечу, что это именно workaround , а не универсальное решение.