Мне нужно вызвать хранимую процедуру и передать аргументы из Powershell. Я думаю, что лучший вариант - использовать sqlcmd.exe, но я не уверен, как передать аргументы хранимой процедуре с помощью этого инструмента.
Как вызвать хранимую процедуру с аргументами с помощью sqlcmd.exe?
Ответ 1
sqlcmd.exe поддерживает замену переменных и параметры с помощью аргумента /v
, см. Использование sqlcmd с переменными сценариев. Например:
sqlcmd -E -d <mydb> -Q "exec usp_myproc @variable=$(myparam)" /v myparam=1
вызывается процедура, передающая значение 1 в script для замены переменной $(myparam)
. Обратите внимание, что подстановка переменной sqlcmd представляет собой замену строки $(variable)
, которая встречается в sqlcmd, перед тем как пакет (запрос) отправляется на SQL Server.
Ответ 2
Командлет Invoke-Sqlcmd позволяет запускать файлы sqlcmd script в среде Windows PowerShell. Большая часть того, что вы можете сделать с sqlcmd, также может быть выполнена с помощью Invoke-Sqlcmd.
Пример:
$myparam = "..."
Invoke-Sqlcmd -Query "EXEC sp_myproc $myparam" -ServerInstance "MyComputer\MyInstance"