I need to call a stored procedure and pass arguments in from Powershell. I think the best option is to use sqlcmd.exe but I'm not sure how to pass arguments to the stored proc using this tool.
sqlcmd.exe supports variable substitution and parameters via the /v
argument, see Using sqlcmd with Scripting Variables. For example:
sqlcmd -E -d <mydb> -Q "exec usp_myproc @variable=$(myparam)" /v myparam=1
will invoke the procedure passing the value 1 to the script to be substituted for the variable $(myparam)
. Note that sqlcmd variable substitution is a string replacement of $(variable)
which occurs in sqlcmd, befor the batch (request) is sent to the SQL Server.
The Invoke-Sqlcmd cmdlet lets you run your sqlcmd script files in a Windows PowerShell environment. Much of what you can do with sqlcmd can also be done using Invoke-Sqlcmd.
Example:
$myparam = "..."
Invoke-Sqlcmd -Query "EXEC sp_myproc $myparam" -ServerInstance "MyComputer\MyInstance"
来源:https://stackoverflow.com/questions/6405123/how-do-i-call-a-stored-procedure-with-arguments-using-sqlcmd-exe