sqlcmd /S <servername> /d <dbname> /E /i
テーブル、ビュー、ストアド プロシージャを作成する SQL スクリプトを実行するために実行するプロセスを C#で作成します。
問題は、実行が完了した後にプロセスが終了しないことです。操作が完了した直後に 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()
実行速度が大幅に向上するというコメントがあります。