Как вызвать хранимую процедуру с аргументами с помощью sqlcmd.exe?

Мне нужно вызвать хранимую процедуру и передать аргументы из Powershell. Я думаю, что лучший вариант - использовать 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"