3

コマンドラインからSQLServer2005データベースに対して一連のSQLステートメントを実行したいと思います。

最初のステートメントを起動すると

osql -E -S <Server_Name>\<Instance_Name> -d <Server_Name>

1>スクリプトを進めることができなくなった後、そこからウィンドウが表示されます。

プロンプトに入力を与える方法1>私は次のSQLステートメントを与えることを意味します

BACKUP DATABASE  TO DISK = 'c:\test.bak' WITH INIT,SKIP

そして最後exitにそのプロンプトに

&&で試しましたが、これはコマンドラインコマンド専用だと思います。

4

2 に答える 2

2

sqlcmdツールで-Qスイッチを探している(sqlserver 2005以降ではosqlを使用しないでください)(すべてのオプションを表示するにはsqlcmd /?と入力します)、またはmsdnで検索します

sqlcmd -E -S <Server_Name>\<Instance_Name> -d <Server_Name> -Q "BACKUP DATABASE TO DISK = 'c:\test.bak' WITH INIT,SKIP"

または、実行するすべてのsqlステートメントを配置するsqlscriptファイルを作成することもできます。ファイルにmyscript.sqlという名前を付けると、osqlコマンドは次のようになります。

 sqlcmd -E -S <Server_Name>\<Instance_Name> -d <Server_Name> -i myscript.sql
于 2012-11-17T11:55:17.507 に答える
1

おそらく、このフォーラムの他の質問から浮かび上がった小さなトリックを試してみることをお勧めします(残念ながら削除されました)。

コマンドの入力をコマンドの下の行に直接挿入してから、ファイルをバッチファイルとしてではなく、cmd.exeの入力として実行できます(これはLinuxのヒアドキュメントに似ています)。例えば:

script.TXT:

@echo off
osql -E -S <Server_Name>\<Instance_Name> -d <Server_Name>
BACKUP DATABASE  TO DISK = 'c:\test.bak' WITH INIT,SKIP
exit

前の「スクリプト」を次のように実行します。

cmd < script.TXT

このテストを実行する場合は、結果を報告してください...

アントニオ

于 2012-11-17T20:59:36.767 に答える