我在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()
,它将会更快地执行A LOT。
答案 0 :(得分:35)
只需使用-Q(大写)。
此命令选择&#39; asd&#39;并立即退出:
sqlcmd -S (local) -Q "select('asd')"
答案 1 :(得分:3)
简单使用这种语法:
sqlcmd -q&#34;退出(命令)&#34;
答案 2 :(得分:1)
您是否已退出或退出SQL文件的末尾?
有关sqlcmd命令,请参阅here。