Недавно мы начали использовать Sql server 2012 SP3 и строить SQL server 2012 с помощью сценария powershell. В нашей автоматизации есть требование запускать несколько сценариев базы данных на базе данных, и я считал Invoke-Sqlcmd очень надежным, пока не обнаружил эту проблему. Когда я запускаю Invoke-sqlcmd с правильным набором параметров в режиме отладки PowerShell в системе, в которой недавно был установлен SQL-сервер. У меня нет проблем. PowershellCommand: Invoke-Sqlcmd -InputFile $ sStrJBSPExecRolePath -ServerInstance $ sStrSQLName -ErrorAction Stop Но когда я выполняю тот же запрос через сценарий автоматизации PowerShell после восстановления того же сервера, я получаю ошибку ниже
Термин Invoke-Sqlcmd не распознается как имя командлета, функции, файла сценария или работающей программы. Проверьте написание имени или, если был включен путь, убедитесь, что он правильный, и повторите попытку.
Я провел исследование в Интернете, многие предлагали импортировать sqlps и т.д., поэтому для тестирования я добавил ниже в свой скрипт
get-pssnapin -Registered Import-Module «sqlps» -DisableNameChecking
Даже после добавления в скрипт выше. Я все еще получаю ту же ошибку. Но когда я запускаю тот же сценарий вручную, он работает отлично. Я не мог понять, что может быть не так. Сценарий автоматизации powershell - этот сценарий устанавливает .Net Framework 3.5, SQL Server 2012, SQL server 2012 SP3, а затем загружает сборку smo, которую я использую для изменения настроек sql, таких как ограничение максимальной памяти SQL.