2

バッチ ファイルから一度に実行する複数の sqlcmd コマンドがあります。各ステートメントを個別に実行すると、完全に機能します。しかし、bat ファイルで 5 つの sqlsmd コマンドを指定すると、最初のコマンドのみが実行され、コマンド ライン画面に 1> が表示されても何も起こりません。これを解決するには?

注:各行の前のCALLステートメントが機能しませんでしたそれが私の研究で見つけた唯一の解決策です

私がやっていることの例::

sqlcmd -S servername-q "EXEC msdb.dbo.prc_Backup @BackupType = 'L'       ,@DBName = 'db' ,@BackupDir = 'J:\MSSQL10.MSSQLSERVER\MSSQL\Backup\db2dba' ,@RetainHours = 47       , @create_sub_dir = 0      " >> C:\tlogresult.txt
sqlcmd -S servername -q "EXEC msdb.dbo.prc_Backup @BackupType = 'L'      ,@DBName = 'DB2RuntimeMigration' ,@BackupDir = 'J:\MSSQL10.MSSQLSERVER\MSSQL\Backup\DB2RuntimeMigration' ,@RetainHours = 47         , @create_sub_dir = 0      " >> C:\tlogresult.txt
4

3 に答える 3

0

私はバットファイルを介してそれを実行することはできません. 私ができることは、コマンドラインから各コマンドの最後にQUITを付けてコマンドを実行することです。

于 2016-03-30T18:52:21.150 に答える
0

https://msdn.microsoft.com/en-us/library/ms180944.aspx

入力ファイルまたはクエリを使用せずにコマンドを実行すると、sqlcmd は指定された SQL Server のインスタンスに接続し、1> の後に点滅するアンダースコアが続く、sqlcmd プロンプトという名前の新しい行を表示します。1 は、これが Transact-SQL ステートメントの最初の行であることを示し、sqlcmd プロンプトは、入力時に Transact-SQL ステートメントが開始されるポイントです。

sqlcmd プロンプトでは、Transact-SQL ステートメントと、GO や EXIT などの sqlcmd コマンドの両方を入力できます。各 Transact-SQL ステートメントは、ステートメント キャッシュと呼ばれるバッファーに格納されます。これらのステートメントは、GO コマンドを入力して Enter キーを押すと、SQL Server に送信されます。sqlcmd を終了するには、新しい行の先頭に EXIT または QUIT と入力します。

...

出力をファイルにパイプする代わりに、-o オプションを使用してファイルに出力します。これにより、対話モードに入ることができなくなります。

または試す

sqlcmd -S servername-q "EXEC msdb.dbo.prc_Backup @BackupType = 'L'       ,@DBName = 'db' ,@BackupDir = 'J:\MSSQL10.MSSQLSERVER\MSSQL\Backup\db2dba' ,@RetainHours = 47       , @create_sub_dir = 0      " >> C:\tlogresult.txt
exit
sqlcmd -S servername -q "EXEC msdb.dbo.prc_Backup @BackupType = 'L'      ,@DBName = 'DB2RuntimeMigration' ,@BackupDir = 'J:\MSSQL10.MSSQLSERVER\MSSQL\Backup\DB2RuntimeMigration' ,@RetainHours = 47         , @create_sub_dir = 0      " >> C:\tlogresult.txt"
exit
于 2016-03-24T18:23:49.633 に答える