none
Problemas con ProcessStartInfo y Process RRS feed

  • Pregunta

  • Buenos días. 

    Estoy utilizando las instrucciones: ProcessStartInfo y Process

    Tengo varios problemas, tengo un script el cual se llama 1.sql

    El código que tiene dentro es: insert into BARRAS VALUES (NULL);

    Si ejecuto la instrucción en CMD:

    sqlcmd -S localhost -d MiBaseDeDatos -E -i "C:\a\0 0 0 0\1.sql"

    Funciona perfectamente en CMD insertandome un nuevo registro, pero si ejecuto la instrucción en C#:

    private void EjecutarArchivoButton_Click(object sender, EventArgs e)
    {
        ProcessStartInfo cmd;
        //cmd = new ProcessStartInfo("sqlcmd", "- S EDUARDO\\SQLEXPRESS -i "+ ruta);
        string localhost = "localhost";
        string BaseDeDatos = "StartMaster";
    
        cmd = new ProcessStartInfo("sqlcmd.exe", "-S "+ localhost + " -d " + BaseDeDatos + " -E -i " + ruta);
        cmd.UseShellExecute = false;
        cmd.CreateNoWindow = true;
        cmd.RedirectStandardOutput = true;
        cmd.WindowStyle = ProcessWindowStyle.Hidden;
        cmd.StandardOutputEncoding = Encoding.ASCII;
    
        Process ejecutar = new Process();
        ejecutar.StartInfo = cmd;
        ejecutar.Start();
        ejecutar.WaitForExit();
        string contenido = ejecutar.StandardOutput.ReadToEnd();
    }

    No me inserta. Siendo que las variables:

    localhost = "localhost"

    BaseDeDatos = "MiBaseDeDatos"

    ruta = "C:\\a\\0 0 0 0\\1.sql"

    Y luego quisiera que la variable que llamo contenido me se guardará la información que me muestra como cuando se me muestra en CMD.

    Y no sé ¿cómo coger el error? si es que se produce, todo esto se hace en bat

    sqlcmd -S localhost -d MiBaseDeDatos -E -b -i "Mi archivo tipo.sql"
    if %ERRORLEVEL% NEQ 0 goto errors
    sqlcmd -S localhost -d MiBaseDeDatos -E -b -Q "drop procedure MiPA"
    sqlcmd -S localhost -d MiBaseDeDatos -E -b -Q "insert Vehiculo(Matricula) values ('1234DGH')"

    Saludos

    lunes, 21 de mayo de 2018 12:47

Todas las respuestas