Problemi backup

di Gaetano Zummo il
13 risposte
Salve, ho fatto il salvataggio del database, ma non capisco perché quando eseguo il backup mi dice che il database non esiste.
Qualcuno può aiutarmi?

SqlConnection con = new SqlConnection();
            SqlCommand sqlcmd = new SqlCommand();

            con.ConnectionString = @" Percorso";

            string backups = @"Percorso";
            if (!System.IO.Directory.Exists(backups))
            {
                System.IO.Directory.CreateDirectory(backups);
            }

            con.Open();

            sqlcmd = new SqlCommand("backup database Database1 to disk='" + backups + "\\" + DateTime.Now.ToString("ddMMyyyy_HHmmss") + ".Bak'", con);

            sqlcmd.ExecuteNonQuery();
            con.Close();

            MessageBox.Show("Data Backup Done", "Backup");

13 Risposte

  • Fatti stampare il comando che esegui da codice;
    copialo esattamente ed eseguilo in SSMS con la stessa utenza del programma
  • sspintux ha scritto:


    Fatti stampare il comando che esegui da codice;
    copialo esattamente ed eseguilo in SSMS con la stessa utenza del programma
    Lo eseguo in locale il database, non è un database server
  • Ti ci puoi connettere ugualmente con SSMS
  • Hai provato ad aggiungere la lettera del disco a "backups" ?
  • gian82 ha scritto:


    Hai provato ad aggiungere la lettera del disco a "backups" ?
    Si, gli do il percorso
  • Non credo che quello che assegni a con.ConnectionString sia una connection string valida,prova a vedere al link che ho postato quale dovrebbe essere la tua connection string , metterei il tuo codice dentro un try catch per intercettare l'errore che credo avvenga alla open non essendo valida la connectionstring
  • gian82 ha scritto:


    Non credo che quello che assegni a con.ConnectionString sia una connection string valida,prova a vedere al link che ho postato quale dovrebbe essere la tua connection string , metterei il tuo codice dentro un try catch per intercettare l'errore che credo avvenga alla open non essendo valida la connectionstring
    Ho provato, ma mi da sempre lo stesso errore
  • ...
  • Gaetano, probabilmente il nome del tuo database è: Database1.mdf e quindi l'istruzione giusta sarebbe:

    backup database Database1.mdf to disk=....

    ...oppure devi inserire il percorso completo (al posto di Database1), perchè quando esegui l'istruzione sql, non è detto che Database1 sia nella stessa cartella, o che il nome salvato nelle tabelle del database Master sia proprio quello. Visto che il problema è che sql non riesce a trovare il tuo database, se vuoi, ti posto due righe che leggono tutti i database in sys.databases, così vedi il nome esatto.

    Tentar non nuoce

    P.S. Non c'è bisogno che verifichi l'esistenza della directory di backup: se non c'è, viene creata; altrimenti non succede nulla, quindi togli tranquillamente l'if che non serve
  • fabiocaruso ha scritto:


    ...
    P.S. Non c'è bisogno che verifichi l'esistenza della directory di backup: se non c'è, viene creata; altrimenti non succede nulla, quindi togli tranquillamente l'if che non serve
    Non mi risulta vero quanto dici
  • Fidati, è così. Prova ad eseguire più volte l'istruzione:

    System.IO.Directory.CreateDirectory(@"c:\prova");

    Se la directory esiste già, non viene generata nessuna eccezione, perchè il controllo viene eseguito all'interno del metodo, quindi è inutile ripeterlo.
  • fabiocaruso ha scritto:


    ...
    System.IO.Directory.CreateDirectory(@"c:\prova");
    ...
    Ahhh, ecco il malinteso.
    Pensavo ti riferissi al backup che la creava autonomamente.
Devi accedere o registrarti per scrivere nel forum
13 risposte