Eseguire comando SQLCMD

di il
7 risposte

Eseguire comando SQLCMD

Buongiorno a tutti e scusate ma sono un neofita in C++ ma per esigenze devo fare un programmino semplice, devo lanciare un comando da exe (per non essere visto) quindi mi sto cimentando in varie guide per lanciare sostanzialmente un bat o direttamente il programma

sul pratico:
da dos lancio: sqlcmd.exe -S localhost\istanza -U sa -P password-Q "EXEC StoreProcedure"

quindi non volendo mostrare login e pass lo sto facendo da C++
soluzione1
            Process process = new Process();
            process.StartInfo.FileName = "cmd.exe";
            process.StartInfo.Arguments = "SQLCMD - S localhost"+(char)92 + "istanza- U sa - P password- Q " + (char)34 +"EXEC Storeprocedure"+(char)34;
            process.Start();

soluzione2
            Process process = new Process();
            process.StartInfo.FileName = "sqlcmd.exe";
            process.StartInfo.Arguments = " - S localhost"+(char)92 + "istanza- U sa - P password- Q " + (char)34 +"EXEC Storeprocedure"+(char)34;
            process.Start();
ma nessuna delle 2 funziona

7 Risposte

  • Re: Eseguire comando SQLCMD

    Questo funziona (la query parte) ma non si chiude la finestra dos... come faccio a dirgli "una volta finito chiudi?"
                Process cmd = new Process();
                cmd.StartInfo.FileName = "cmd.exe";
                cmd.StartInfo.RedirectStandardInput = true;
                cmd.StartInfo.RedirectStandardOutput = true;
                cmd.StartInfo.CreateNoWindow = true;
                cmd.StartInfo.UseShellExecute = false;
                cmd.Start();
    
                cmd.StandardInput.WriteLine("SQLCMD -S localhost" + (char)92 + "istanza -U sa -P password -Q " + (char)34 + "EXEC storeprocedure" + (char)34);
                cmd.StandardInput.Flush();
                cmd.StandardInput.Close();
           //     cmd.WaitForExit();
                Console.WriteLine(cmd.StandardOutput.ReadToEnd());
  • Re: Eseguire comando SQLCMD

    Secondo me, se lanci il bat da C++ si vede comunque il processo da Task Manager, quindi username e password non sono al sicuro


    Se il problema è solo quello, hai verificato come si comporta SQLCMD se non passi utente e password?

    A memoria prova ad usare l'autenticazione Windows. In quel caso puoi proprio fare a meno di passarle e configuri l'istanza SqlServer per accedere con l'autenticazione Windows
  • Re: Eseguire comando SQLCMD

    Ciao grazie della risposta, ma il problema è proprio il fatto che devo disabilitare l'untene di sistema su SQL per evitare che entrino e quindi non SQLCMD va chiamato con login e pass, cmq credo di aver risolto, grazie
  • Re: Eseguire comando SQLCMD

    Salve,
    hai provato a passare i parametri di SqlCMD "senza" lo spazio tra "-" e il parametro?
    -S ...
    -U ...
    -P ...

    salutoni romagnoli
    --
    Andrea
  • Re: Eseguire comando SQLCMD

    Si si nel copiare il codice me li aveva tolti, nel programma non ci sono, grazie
  • Re: Eseguire comando SQLCMD

    E.....

    da te funziona?
    come?

    salutoni romagnoli
    --
    Andrea
  • Re: Eseguire comando SQLCMD

    Questo è il codice completo
    
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Diagnostics;
    
    namespace IposSync
    {
        class Program
        {
            static void Main()
            {
                Process cmd = new Process();
                cmd.StartInfo.FileName = "cmd.exe";
                cmd.StartInfo.RedirectStandardInput = true;
                cmd.StartInfo.RedirectStandardOutput = true;
                cmd.StartInfo.CreateNoWindow = true;
                cmd.StartInfo.UseShellExecute = false;
                cmd.Start();
    
                cmd.StandardInput.WriteLine("SQLCMD -S localhost" + (char)92 + "istanza-U sa -P password-Q " + (char)34 + "EXEC storepr" + (char)34);
                cmd.StandardInput.Flush();
                cmd.StandardInput.Close();
           //     cmd.WaitForExit();
                Console.WriteLine(cmd.StandardOutput.ReadToEnd());
                
            }
        }
    }
    
Devi accedere o registrarti per scrivere nel forum
7 risposte