我需要调用存储过程并从Powershell传递参数。我认为最好的选择是使用sqlcmd.exe,但我不确定如何使用此工具将参数传递给存储过程。
答案 0 :(得分:13)
sqlcmd.exe通过/v
参数支持变量替换和参数,请参阅Using sqlcmd with Scripting Variables。例如:
sqlcmd -E -d <mydb> -Q "exec usp_myproc @variable=$(myparam)" /v myparam=1
将调用将值1传递给脚本以替换变量$(myparam)
的过程。请注意,sqlcmd变量替换是$(variable)
的字符串替换,它发生在sqlcmd中,因为批处理(请求)被发送到SQL Server。
答案 1 :(得分:2)
Invoke-Sqlcmd cmdlet允许您在Windows PowerShell环境中运行 sqlcmd 脚本文件。您可以使用Invoke-Sqlcmd完成 sqlcmd 的大部分工作。
示例:
$myparam = "..."
Invoke-Sqlcmd -Query "EXEC sp_myproc $myparam" -ServerInstance "MyComputer\MyInstance"