web-dev-qa-db-ja.com

sqlcmd.exeを使用して引数付きのストアドプロシージャを呼び出すにはどうすればよいですか?

ストアドプロシージャを呼び出して、Powershellから引数を渡す必要があります。 sqlcmd.exeを使用するのが最善のオプションだと思いますが、このツールを使用してストアドプロシージャに引数を渡す方法がわかりません。

13
Martin Doms

sqlcmd.exeは、_/v_引数を介した変数置換とパラメーターをサポートします。 スクリプト変数でのsqlcmdの使用 を参照してください。例えば:

_sqlcmd -E -d <mydb> -Q "exec usp_myproc @variable=$(myparam)" /v myparam=1
_

変数$(myparam)の代わりに値1をスクリプトに渡すプロシージャを呼び出します。 sqlcmd変数置換は、バッチ(要求)がSQL Serverに送信される前に、sqlcmdで発生する$(variable)の文字列置換であることに注意してください。

14
Remus Rusanu

Invoke-Sqlcmd コマンドレットを使用すると、Windows PowerShell環境でsqlcmdスクリプトファイルを実行できます。 sqlcmdで実行できることの多くは、 Invoke-Sqlcmd を使用して実行することもできます。

例:

$myparam = "..." Invoke-Sqlcmd -Query "EXEC sp_myproc $myparam" -ServerInstance "MyComputer\MyInstance"

3