Καλημέρα, σε ένα site που έχω κάνει με asp.net 1.1 θελω να βάλω τη δυνατότητα να γίνεται backup και restore της access από τον χρήστη.
Αρχικά παίρνω backup με file.copy τη βαση σε αλλο folder και προσθέτω την εγγραφή του backup σε αλλη βαση για να βλέπω όλα τα backup που χω κάνει.
Private Sub backup_Click(ByVal sender As System.Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles backup.Click
Dim DBPath, bkpath As String
DBPath = Server.MapPath("db\database.mdb")
bkpath = Server.MapPath("backup\" & dateFormat(GetDate(System.DateTime.Now, 2)) & ".mdb") 'της μορφής ηη-μμ-εε
If Not System.IO.File.Exists(bkpath) Then
DBPath = Server.MapPath("db\backups.mdb")
Dim sConnectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & DBPath & ";"
Me.OleDbConnection1.ConnectionString = sConnectionString
Dim addCommand As New OleDb.OleDbCommand
Me.OleDbConnection1.Open()
addCommand.Connection = OleDbConnection1
addCommand.CommandText = CommandType.Text
Dim param1 As New OleDb.OleDbParameter("@name", OleDb.OleDbType.VarChar)
addCommand.Parameters.Add(param1)
addCommand.Parameters("@name").Value = dateFormat(GetDate(System.DateTime.Now, 2)) & ".mdb"
Dim param2 As New OleDb.OleDbParameter("@DBdate", OleDb.OleDbType.Date)
addCommand.Parameters.Add(param2)
addCommand.Parameters("@DBdate").Value = GetDate(System.DateTime.Now, 1)
Dim param3 As New OleDb.OleDbParameter("@path", OleDb.OleDbType.VarChar)
addCommand.Parameters.Add(param3)
addCommand.Parameters("@path").Value = bkpath
addCommand.CommandText = "INSERT INTO backup (name, DBdate, path) values (?,?,?)"
Try
addCommand.ExecuteNonQuery()
Me.OleDbConnection1.Close()
File.Copy(DBPath, bkpath)
backupDate() 'function που ενημερώνει την Online db ότι οι εγγραφες εχουν παρθει backup τη συγκεκριμενη ημερομηνια
Catch ex As Exception
Response.Write("ERROR1: " & ex.Message & "<br>")
Response.Write("ERROR1: " & ex.Source & "<br>")
Response.Write("ERROR1: " & ex.StackTrace & "<br>")
End Try
Me.OleDbDataAdapter1.Fill(Me.BackupDS1)
Me.contactGrid.DataBind()
End If
End Sub
Όλα καλα μέχρι εδώ.
Τώρα θέλω να κάνω restore αλλα να μπορούν να μπούν στη βάση από το backup οι νέες εγγραφες που υπάρχουν από το τελευταίο backup.
Κανω copy τη backup db σε ένα temp folder. Τώρα παίρνω σε dataset ολες τις εγγραφες που δεν εχουν παρθει backup.
Dim ds As New DataSet
Dim adapter As New Data.OleDb.OleDbDataAdapter
GetCommand.CommandText = "select * from db where backup=false"
Try
GetCommand.ExecuteNonQuery()
Me.OleDbConnection1.Close()
Catch ex As Exception
Response.Write("ERROR1: " & ex.Message & "<br>")
Response.Write("ERROR1: " & ex.Source & "<br>")
Response.Write("ERROR1: " & ex.StackTrace & "<br>")
End Try
adapter.Fill(ds)
Τελος θέλω να τις κάνω insert στη βάση, από το dataset, που είναι στο temp folder.
Πως το κάνω αυτό το τελευταίο?
Ευχαριστώ