Benachrichtigung nach dem Beenden einer Datenbankwiederherstellung VB.Net

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Schamash.

    Benachrichtigung nach dem Beenden einer Datenbankwiederherstellung VB.Net

    Hallo erstmal,

    ich stehe vor einem Problem, da ich nicht weiß wie ich da heran gehen soll.
    Mein Problem ist, das ich aktuell keinerlei Feedback bekomme wenn ich über mein Programm eine Datenbank wiederherstelle.
    So wie mein Code aktuell ist werden aber auch keine Datenbanken wiederhergestellt.(Hier muss ich noch die Fehlerquelle finden)
    Meine Frage nun: Wie bekomme ich ein Feedback nachdem Wiederherstellen?
    Es würde mir schon eine MessageBox reichen die sagt: Backup ist eingespielt, oder Backup ist fehlgeschlagen.

    Wenn jemandem Fehler im Code auffallen würde es mich freuen, wenn Ihr mir diese ebenfalls mitteilt.

    Hier meine Klasse die "eigentlich" eine Datenbank wiederherstellen soll:

    VB.NET-Quellcode

    1. Public Class Datenbank
    2. Public con As New OleDb.OleDbConnection
    3. Public cmd As New OleDb.OleDbCommand
    4. Public reader As OleDb.OleDbDataReader
    5. Private Instanz As String
    6. Private Servername As String
    7. Private Benutzer As String
    8. Private Kennwort As String
    9. Public Sub Provider()
    10. Dim read = New XML_Reader
    11. read.xmlread()
    12. Servername = read.PServername
    13. Instanz = read.PInstanz
    14. Benutzer = read.PBenutzer
    15. Kennwort = read.PKennwort
    16. con.ConnectionString = "Provider=SQLOLEDB; Server=" & Instanz & "; User ID=" & Benutzer & "; Password=" & Kennwort & ";"
    17. cmd.Connection = con
    18. End Sub
    19. Public Sub Restore(bakname As String)
    20. ' Datenbankname
    21. 'Dim FSW = New FileSystemWatcherC
    22. Dim sDBName As String
    23. sDBName = bakname
    24. ' Speicherort der Backup-Datei
    25. Dim sBackupFile As String
    26. sBackupFile = "D:\kt\Watcher\" & sDBName & ".bak"
    27. Provider()
    28. MsgBox(con.ConnectionString)
    29. ' Hinweis: Die Verbindung zum MS-SQL Server muss bereits bestehen
    30. cmd.Connection = con
    31. cmd.CommandText = "Use Master; RESTORE DATABASE [" & sDBName & "] FROM DISK= N'" & sBackupFile & "' WITH FILE = 1, NOUNLOAD, STATS = 10"
    32. End Sub
    33. End Class



    ich bedanke mich schon mal im voraus, da hier sehr viele sind, die bemüht sind anderen zu Helfen
    Ich habe das RESTORE noch nicht verwendet, aber braucht das nicht auch ein cmd.ExecuteNonQuery?
    Dieses hätte dann auch einen Returnwert zum auswerten.
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."
    @'Marvin315
    Was mir dazu noch aufgefallen ist:
    Nicht vergessen, die Verbindung wieder zu schließen - am besten dazu Using-Blöcke verwenden...
    Und mit IO.Path.Combine einen Pfad zusammenbauen...
    ConnectionStringBuilder verwenden...

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VB1963“ ()

    Danke für die schnellen Rückmeldungen
    Beide Antworten haben mir sehr geholfen.

    Mein Restore Sub() sieht jetzt so aus:

    VB.NET-Quellcode

    1. Public Sub Restore(bakname As String)
    2. 'Datenbankname
    3. Dim sDBName As String
    4. sDBName = bakname
    5. ' Speicherort der Backup-Datei
    6. Dim sBackupFile As String
    7. sBackupFile = "D:\kt\Watcher\" & sDBName & ".bak"
    8. Provider()
    9. cmd.Connection = con
    10. Try
    11. Dim strResSQLsentencia As String = "RESTORE DATABASE [" & sDBName & "] FROM DISK= N'" & sBackupFile & "' WITH FILE = 1, NOUNLOAD, STATS = 10"
    12. con.Open()
    13. cmd = New OleDbCommand(strResSQLsentencia, con)
    14. cmd.ExecuteNonQuery()
    15. MsgBox("Db Has been Restored.")
    16. con.Close()
    17. Catch ex As Exception
    18. MsgBox("Could not be restored.", vbOKOnly)
    19. Finally
    20. If con.State = ConnectionState.Open Then
    21. con.Close()
    22. con.Dispose()
    23. End If
    24. End Try
    25. End Sub


    Rückmeldung bekomm ich schon mal leider aber eine negative, jetzt muss ich erstmal schauen ob es an der der Verbindung liegt oder vielleicht mal eine detaillierte Fehlermeldung ausgeben als "Could not be restored" :D .
    2 Sachen.

    1. nimm den Try - Catch raus dann bekommst du auch die Fehlermeldung angezeigt die kommt

    VB.NET-Quellcode

    1. if ExecuteNonQuery() >0 then
    2. ' geschaft
    3. else
    4. 'nicht geschaft
    5. end if

    2. con.close geht immer, mach bei con.Open die prüfung rein.
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."