2017-12-21 58 views
0

いくつかのSQLスクリプトといくつかのクエリを実行するバッチを作成しようとしています。私はこのように私のバッチでsqlcmdを使用します。sqlcmdクエリでバッチ変数を使用する

@echo off 
sqlcmd -S server -U user -P password -Q query 

私は、同じサーバー上の別のクエリを実行するように、私は、変数を使用してサーバー文を交換したいと思います。だから私はこのような何か書くことができます:

@echo off 
SET server=192.X.X.X 
sqlcmd -S server -U user -P password -Q first query 
sqlcmd -S server -U user -P password -Q second query 

を私はSOにこの質問を見つけましたが、私はまだそれがどのように動作するかを理解することができませんでしだ:

SQLCMD using batch variable in query

誰もがアイデアを持っていますか?

ありがとうございます!

+0

'-Sサーバー'の各インスタンスを '-S%server%'に変更します。 – Compo

+0

ああ、これ以外は何も試しませんでした。私はや%serverのようにしましたが、このようなことは決してありません。ありがとう、たくさんの男! – Arhyaa

答えて

1

少し私のコメントに拡大:

@Echo off 
Set "server=192.X.X.X" 
Set "user=myname" 
Set "password=pa55w0rd" 
sqlcmd -S %server% -U %user% -P %password% -Q first query 
sqlcmd -S %server% -U %user% -P %password% -Q second query 

あなたは、関連する、必要に応じて引用して、あなたの変数を囲むこともできます。

+0

そして、変数をsqlcmdの文字列と連結したいのですが?私は "sqlcmd -S%server%&" myString "を試してみましたが、機能しません。sqlcmdステートメントで直接実行できますか、SET var =%server%&" myString "後で? – Arhyaa

+0

もしあなたがそれらに参加したいならば、 'Set" var =%server%myString "' _(必要に応じて空白の有無にかかわらず)_を使用してください。さらに、アンパサンドを含める場合は、 ''& '* *この 'Set" var =%server%^&myString "のように、キャレットでエスケープする必要があります。 – Compo

0

Microsoftから:「Cmd.exeは、バッチパラメータ展開変数%0から%9を提供します。バッチファイルでバッチパラメータを使用すると、%0はバッチファイル名に置き換えられ、%1から%9はコマンドラインで入力した対応する引数に置き換えられます。だから、

あなたが実行したいクエリの数はちょうどこのようなパラメータを介して渡す知られている場合:

TEST.BAT:

@echo off 
SET server=192.X.X.X 
sqlcmd -S server -U user -P password -Q %1% 
sqlcmd -S server -U user -P password -Q %2% 

次に、このようTEST.BATを呼び出します。

Test.bat "Select * from Test1" "Select * From Test2" 

このように最大9個のクエリを渡すことができます。

関連する問題