如何在执行完成后立即终止sqlcmd?

Ano*_*ous 21 c# batch-file 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));
}
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,我评论说如果我删除(或评论)process.WaitForExit()它会更快地执行A LOT.

Fil*_*ges 39

只需使用-Q(大写).

此命令选择'asd'并立即退出: sqlcmd -S (local) -Q "select('asd')"

  • sqlcmd.exe的-i参数从OP想要的文件中执行SQL。您对-q或-Q的建议不同-这些参数告诉sqlcmd从命令行获取查询。 (2认同)

Pet*_*ney 1

您的 SQL 文件末尾是否有 quit 或 exit ?

请参阅此处了解 sqlcmd 命令。