studio - ejecutar script sql desde c#
¿Cómo terminar sqlcmd inmediatamente después de completar la ejecución? (3)
¿Ha abandonado o salido al final de su archivo SQL?
Vea here para los comandos sqlcmd.
Creo un proceso en C # para ejecutar sqlcmd /S <servername> /d <dbname> /E /i
para ejecutar el script sql que crea tablas, vistas, procedimientos almacenados.
El problema es que el proceso no termina después de que se completa la ejecución. Quiero saber cómo puedo terminar sqlcmd inmediatamente después de que se complete la operación.
¿Hay algún argumento de entrada a sqlcmd que pueda especificar para finalizar el proceso de inmediato o puedo hacerlo directamente en C #?
Actualizar
Este es el código C # que utilizo para ejecutar el proceso.
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));
}
Como puede ver, he comentado que si elimino (o comento) el process.WaitForExit()
se ejecutará MUCHO más rápido.
Sólo tiene que utilizar -Q (en mayúsculas).
Este comando selecciona ''asd'' y se cierra inmediatamente: sqlcmd -S (local) -Q "select(''asd'')"
Simple use esta sintaxis:
sqlcmd -q "exit (comando)"