Ivan Gentile

Office and .NET blog
posts - 24, comments - 0, trackbacks - 2

Backup e recovery di un database SQL in VB.net

Non so a quanti di voi è successo (probabilmente sono solo io l'imbranato!!) ma se dovesse servire qui spiego come fare.

Tutto nasce dal famoso BACKUP/RECOVERY dei database in SQL.

Per creare una copia di BACKUP del database, SQL server mette a disposizione un generatore automatico di script, permettendoci anche di salvarlo in un file o nella clipboard.

Lo script generato non è altro che un istruzione SQL che, come tale, può essere mandata in esecuzione da codice come qualsiasi altra istruzione (INSERT, DELETE ....).

Supponiamo che il nostro database si chiami STO_PER_MORIRE e di volerne creare una copia di BACKUP nella nostra cartella dei progetti C:\Documents and Settings\Ivan\Documenti\Visual Studio 2005\Projects\Backup\Copia e di voler chiamare la copia del database Copia.bak.

Allora basta generare la nostra query con il wizard di SQL server, copiarla nel codice VB, C# o ASP.net ed eseguirla.

ATTENZIONE! Ricordate che la parola chiave "GO" non è del linguaggio SQL, quindi può essere cancellata.

Riporto il codice VB.net per comodita, ma è uguale in tutti gli altri.

 

Public Sub Esegui_query(ByVal Con_connessione As Integer)

      Try

      Dim Nome_db as String = "STO_PER_MORIRE"

      Dim Path_backup as String = "C:\Documents and Settings\Ivan\Documenti\Visual Studio 2005" _

                                          & "\Projects\Backup\Copia"

      Dim Nome_backup as String = "Copia.bak"

      Dim Query as String

      Query = "BACKUP DATABASE [" & Nome_db & "] TO DISK = N'" & Path_backup & "\" _

                 & Nome_backup & "' WITH NOFORMAT, INIT, NAME = N'" & Nome_db & "-Full " _

                 & "Database Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10"

      Using db As New SqlConnection(StringaConnessione)

            Dim comando As New SqlCommand(Query, db)

            db.Open()

            comando.ExecuteNonQuery()

      End Using

      Exit Try

      Catch Ex As Exception

            'TODO:Errore

      End Try

End Sub

 

Ovviamente l'operazione di RECOVERY si sviluppa allo stesso modo.

Ciao

Ivan

posted on martedì 31 gennaio 2006 15.46