Ответ 1
Просто используйте -Q (верхний регистр).
Эта команда выбирает "asd" и немедленно завершает работу:
sqlcmd -S (local) -Q "select('asd')"
Я создаю процесс на С# для выполнения sqlcmd /S <servername> /d <dbname> /E /i
для запуска sql script, который создает таблицы, представления, хранимые процедуры.
Проблема заключается в том, что процесс не завершается после завершения выполнения. Я хочу знать, как я могу завершить sqlcmd сразу после завершения операции.
Есть ли какой-либо входной аргумент sqlcmd, который я могу указать для немедленного завершения процесса или я могу сделать это непосредственно на С#?
Обновление
Это код С#, который я использую для выполнения процесса.
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()
, он будет быстрее выполнять LOT.
Просто используйте -Q (верхний регистр).
Эта команда выбирает "asd" и немедленно завершает работу:
sqlcmd -S (local) -Q "select('asd')"
Просто используйте этот синтаксис:
sqlcmd -q "exit (команда)"
У вас есть выход или выход в конце вашего файла SQL?
См. здесь для команд sqlcmd.