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