web-dev-qa-db-ja.com

実行が完了した直後にsqlcmdを終了するにはどうすればよいですか?

C#でプロセスを作成して_sqlcmd /S <servername> /d <dbname> /E /i_を実行し、テーブル、ビュー、ストアドプロシージャを作成するSQLスクリプトを実行します。

問題は、実行が完了した後、プロセスが終了しないことです。操作が完了した直後にsqlcmdを終了する方法を知りたいです。

プロセスをすぐに終了するように指定できるsqlcmdへの入力引数はありますか、それともC#で直接実行できますか?

更新

これは、プロセスの実行に使用するC#コードです。

_foreach (var file in files)
{
    ////var begin = DateTime.Now;
    ////context.TrackBuildWarning(string.Format("Start exec sql file at {0}.", DateTime.Now));

    Process process = new Process();
    process.StartInfo.UseShellExecute = false;
    process.StartInfo.RedirectStandardOutput = true;
    process.StartInfo.RedirectStandardError = true;
    process.StartInfo.CreateNoWindow = true;
    process.StartInfo.FileName = "sqlcmd.exe";
    process.StartInfo.Arguments = string.Format("-S {0} -d {1} -i \"{2}\" -U {3} -P {4}", sqlServerName, databaseName, file, sqlUserName, sqlPassword);
    process.StartInfo.WorkingDirectory = @"C:\";
    process.Start();
    process.WaitForExit(); // if I comment out this code it will execute much faster

    ////context.TrackBuildWarning(string.Format("Finished exec sql file at {0} total time {1} milliseconds.", DateTime.Now, DateTime.Now.Subtract(begin).TotalMilliseconds));
}
_

ご覧のとおり、process.WaitForExit()を削除(またはコメント)すると、非常に高速に実行されるというコメントがあります。

23
Anonymous

-Q(大文字)を使用するだけです。

このコマンドは「asd」を選択し、すぐに終了します:sqlcmd -S (local) -Q "select('asd')"

41
Filipe Borges

SQLファイルの最後で終了または終了しましたか?

Sqlcmdコマンドについては、 ここ を参照してください。

1
Pete McKinney