Ошибка при использовании sqlcmd с Pwershell Start-job - PullRequest
0 голосов
/ 06 апреля 2020

Когда я выполняю эту команду в Powersheel, все работает нормально:

sqlcmd -S dwh -i ".\script.sql" -o ".\log.txt"

Однако, когда я хотел бы настроить некоторые задания, но следующая команда не работает:

Start-Job -Name TestSqlCmd -ScriptBlock {sqlcmd -S dwh -i ".\script.sql" -o ".\log.txt"}

Я получил следующую ошибку:

Sqlcmd: Error: Error occurred while opening or operating on file .\script.sql (Reason: The system cannot find the path specified).
    + CategoryInfo          : NotSpecified: (Sqlcmd: Error: ...ath specified).:String) [], RemoteException
    + FullyQualifiedErrorId : NativeCommandError
    + PSComputerName        : localhost

Не могли бы вы помочь мне с этим вопросом, пожалуйста?

Ответы [ 2 ]

2 голосов
/ 06 апреля 2020

Всякий раз, когда вы запускаете задание, блок сценария внутри этого задания, фактически запускается в новом сеансе PS для вас, вы больше не находитесь на одном и том же пути, вы можете сделать следующее, чтобы исправить это:

Start-Job -Name TestSqlCmd -ScriptBlock {
    Param(
        $path
    )
    echo "$path\script.sql" 
    echo "$path\log.txt"
} -ArgumentList (Get-Location).Path

Или просто добавьте полный путь в сам скрипт-блок.

0 голосов
/ 06 апреля 2020

Powershell 7 также имеет параметр -workingdirectory. На самом деле, похоже, что start-job или start-threadjob в ps 7 в любом случае уважают текущий каталог.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...