0

おはようございます。誰かが私を助けることができるかどうか疑問に思います。私は自分の生活や他の人の生活を楽にするためにバッチファイルを書き込もうとしていますが、助けを求めたいと思っていました。私は通常、特定のインストールをインストールするために作成したさまざまなSQLスクリプトを実行し、これらすべてをバッチファイルに移動すると作業が楽になると判断しました。バッチファイルから次のコマンドを実行しようとしています。

:T02
cls
echo Qualifiers will be installed next with names of
echo Q_AutoFax_CC_1
echo Q_AutoFax_CC_2
echo Q_AutoFax_CC_3
echo Q_AutoFax_CC_4
echo Q_AutoFax_CC_5
pause
cls
If Exist "C:\Program Files\Microsoft SQL Server\100\Tools\Binn\bcp.exe" cd "C:\Program Files\Microsoft SQL Server\100\Tools\Binn"
If Exist "C:\Program Files\Microsoft SQL Server\90\Tools\Binn\bcp.exe" cd "C:\Program Files\Microsoft SQL Server\90\Tools\Binn"
If Exist "C:\Program Files\Microsoft SQL Server\80\Tools\Binn\bcp.exe" cd "C:\Program Files\Microsoft SQL Server\80\Tools\Binn"


sqlcmd /U eiw_admin /P eiw_admin /d cabinet /S . /Q 
"declare @q int
select @q = 1
While @q < 6
    Begin
        Insert into cabinet..qualifiers 
        select 'HL7', 'Q_AutoFax_CC_'+ convert(varchar(2),@q), 
        '%Physician_Code'+ convert(varchar(2),@q)+'% == (NULL) || %Physician_Code'+ convert(varchar(2),@q)+'% == (BLANK)', 'R'    
    select @q = @q + 1
    End"

pause
cls

私は通常、次のように実行します。

declare @q int
select @q = 1
While @q < 6
    Begin
        Insert into cabinet..qualifiers 
        select 'HL7', 'Q_AutoFax_CC_'+ convert(varchar(2),@q), 
        '%Physician_Code'+ convert(varchar(2),@q)+'% == (NULL) || %Physician_Code'+ convert(varchar(2),@q)+'% == (BLANK)', 'R'    
    select @q = @q + 1
    End

SQLから、それはうまく実行されます...私は以前にバッチファイルでSQLコマンドを使用しました...それはループであり、一般的なコマンドではないので、これに対して行う必要がある何か別のものがありますか?ファイルはデータベースサーバーから実行されており、エラーが発生します。

Sqlcmd: '-Q': Missing argument. Enter '-?' for help. ' "declare @q int' is not recognized as an internal or external command, operable program or batch file

.....選択、開始、挿入、選択と同じこと....など

SQLCMDを実行したい場合は、コマンドを一重引用符で囲む必要があると思いましたが、これは正しくありませんか?

4

1 に答える 1

1

バッチファイルのSQLステートメントは、ステートメントと同じ行にある必要がありますsqlcmd。SQLステートメントを別のファイルに入れ、-iスイッチを使用してファイルからクエリを読み取るのが最も簡単な場合があります。

于 2012-07-17T14:39:15.057 に答える