vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#

https://www.vbarchiv.net
Rubrik: Datenbanken · SQL-Server   |   VB-Versionen: VB5, VB629.03.04
Backup/Restore von SQL Server 7 - Datenbanken

Dieser Tipp zeigt, wie sich Datenbanken eines SQL Server 7 sichern und wiederherstellen lassen.

Autor:   Brian SchwartzBewertung:  Views:  24.135 
www.proversys.netSystem:  Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 Beispielprojekt auf CD 

Unser heutiger Tipp zeigt, wie sich Datenbanken eines SQL Servers sichern und wiederherstellen lassen. Der Tipp funktioniert unter MS SQL Server 7, sollte jedoch auch unter MS SQL Server 2000 funktionieren.

Zunächst muss jedoch in der Verweisliste (Menü Projekt - Verweise) der Eintrag Microsoft SQLDMO Object Library aktiviert werden.

Sicherung erstellen

' Backup einer Datenbank erstellen
Private Function BackUpDB(ByVal sServer As String, _
  ByVal sDataBase As String, _
  ByVal sUser As String, ByVal sPW As String) As Boolean
 
  ' Fehlerbehandlung aktivieren
  On Error Goto ErrHandler
 
  Dim oSQLServer As SQLDMO.SQLServer
  Dim oBackUpDev As SQLDMO.BackupDevice
  Dim sBackUpDBName As String
  Dim sPath As String
  Dim bExistDevice As Boolean
 
  Set oSQLServer = New SQLDMO.SQLServer
 
  ' ...mit Server connecten
  oSQLServer.Connect sServer, sUser, sPW
 
  ' ...Backupnamen vergeben
  sBackUpDBName = sDataBase & "_BACKUP"
 
  ' ...Backuppfad setzen ( Standardpfad des SQL-Server + "\BackUp" )
  sPath = oSQLServer.Registry.SQLRootPath & "\Backup"
  bExistDevice = False
 
  ' ...prüfen, ob BackUpDevice schon existiert
  For Each oBackUpDev In oSQLServer.BackupDevices
    If UCase(oBackUpDev.Name) = UCase(sBackUpDBName) Then
      bExistDevice = True
      Exit For
    End If
  Next
 
  ' ...wenn Device noch nicht angelegt, dann jetzt anlegen
  If Not bExistDevice Then
    oSQLServer.ExecuteImmediate "sp_addumpdevice 'disk','" & _
      sBackUpDBName & "','" & sPath & "\" & sBackUpDBName & ".BAK'"
    oSQLServer.BackupDevices.Refresh
  End If
 
  ' ...durch Sichern als Full-Backup wird das LOG automatisch mitgesichert,
  '    braucht also nicht seperat gesichert werden
  oSQLServer.ExecuteImmediate ("backup database " & sDataBase & _
    " to " & sBackUpDBName & " with init")
 
  ' ...Verbindung schliessen und Objekte leeren
  oSQLServer.Close
  Set oBackUpDev = Nothing
  Set oSQLServer = Nothing
 
  ' Rückgabewert: Sicherung erfolgreich
  BackUpDB = True
  On Error Goto 0
  Exit Function
 
ErrHandler:
  ' Fehler!
  MsgBox "Fehler beim Erstellen der DB-Sicherung." & vbCrLf & _
    Err.Number & " " & Err.Description, vbCritical
 
  BackUpDB = False
End Function

Sicherung wiederherstellen

' Sicherung wiederherstellen
Private Function RestoreDB(ByVal sServer As String, _
  ByVal sDataBase As String, _
  ByVal sUser As String, _
  ByVal sPW As String)
 
  Dim oSQLServer As SQLDMO.SQLServer
  Dim oBackUpDev As SQLDMO.BackupDevice
  Dim sBackUpDBName As String
  Dim sPath As String
  Dim bExistDevice As Boolean
 
  ' Fehlerbehandlung aktivieren
  On Error Goto ErrHandler
 
  Set oSQLServer = New SQLDMO.SQLServer
 
  ' ...Verbinden mit dem Server
  oSQLServer.Connect sServer, sUser, sPW
 
  ' ...Setzen des Backupnamens
  sBackUpDBName = sDataBase & "_BACKUP"
 
  ' ...Setzen des Backuppfades ( Standardpfad des SQL-Server + "\BackUp" )
  sPath = oSQLServer.Registry.SQLRootPath & "\Backup"
  bExistDevice = False
 
  ' ...prüfen, ob BackUpDevice schon existiert
  For Each oBackUpDev In oSQLServer.BackupDevices
    If UCase(oBackUpDev.Name) = UCase(sBackUpDBName) Then
      bExistDevice = True
      Exit For
    End If
  Next
 
  ' ...wenn Device noch nicht angelegt, dann jetzt anlegen
  If Not bExistDevice Then
    oSQLServer.ExecuteImmediate "sp_addumpdevice 'disk','" & _
      sBackUpDBName & "','" & sPath & "\" & sBackUpDBName & ".BAK'"
    oSQLServer.BackupDevices.Refresh
  End If
 
  ' ...Wiederherstellen der Datenbank
  oSQLServer.ExecuteImmediate ("restore database " & sDataBase & _
    " FROM " & sBackUpDBName)
 
  ' ...Verbindung schliessen und Objekte leeren
  oSQLServer.Close
  Set oBackUpDev = Nothing
  Set oSQLServer = Nothing
 
  ' Rückgabewert: Wiederherstellung erfolgreich
  RestoreDB = True
  On Error Goto 0
  Exit Function
 
ErrHandler:
  ' Fehler!
  MsgBox "Fehler beim Wiederherstellen der DB-Sicherung." & vbCrLf & _
    Err.Number & " " & Err.Description, vbCritical
 
  RestoreDB = False
End Function

Aufruf der Funktionen:

' Backup
BackUpDB "Server", "Datenbank", "User", "Password"
' Restore
RestoreDB "Server", "Datenbank", "User", "Password"

Bekannte Probleme:
Die Datenbank "master" kann nicht zurückgesichert werden, da der SQL-Server hierzu im Single-User-Mode gestartet werden muss. Der Grund liegt darin, dass sich zu diesem Zeitpunkt kein anderer Anwender an die DB anmelden kann.
 



Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
(einschl. Beispielprojekt!)

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
 
Copyright ©2000-2024 vb@rchiv Dieter OtterAlle Rechte vorbehalten.


Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.