SQL Server-Datenbanken sichern und zurückspielen
TOC
Inhaltsverzeichnis reduzieren
Inhaltsverzeichnis erweitern

SQL Server-Datenbanken sichern und zurückspielen

Veröffentlicht: 09. Jun 2005
Von Mathias Schiffer

Dieser MSDN Quickie zeigt, wie Sie Datenbanken aus SQL Server als Backup-Datei sichern sowie später wieder zurückspielen können.

Microsoft SQL Server ist beim Anlegen und Zurückschreiben von Backup-Dateien sehr kooperativ: Sie können einfache SQL-Kommandos verwenden, um eine SQL Server Datenbank in einer Datei zu sichern oder eine so gesicherte Datei zurück in SQL Server zu schreiben (entsprechende Rechte natürlich vorausgesetzt).

Microsoft SQL Server unterstützt hierfür die Anweisungen "BACKUP DATABASE TO DISK" und "RESTORE DATABASE FROM DISK", die für den standardmäßigen SQL Server-Wiederherstellungsmodus "Einfach" sehr bequem einzusetzen sind und im Folgenden für Visual Basic .NET gekapselt werden.

Mit der folgenden Routine können Sie ein Backup vornehmen:

Public Function BackupSqlDatabase(ByVal ConnectionString As String, _
                                  ByVal DatabaseName As String, _
                                  ByVal BackupFilePath As String _
                                  ) As Boolean
  ' Erstellt eine Backup-Datei aus einer SQL Server Datenbank.
  ' ConnectionString: Verbindungsstring zur Datenbank,
  ' z.B. "server=(local); user id=sa; password=; Database=Nordwind;"
  ' DatabaseName: Name der Datenbank im SQL Server, z.B. "Nordwind"
  ' BackupFilePath: Kompletter Pfad der zu erzeugenden Backup-Datei
  
  ' SQL-Verbindung definieren, Kommando erzeugen:
  Dim sqlConnection As System.Data.SqlClient.SqlConnection = _
                   New
System.Data.SqlClient.SqlConnection(ConnectionString)
  Dim sqlCommand As System.Data.SqlClient.SqlCommand = _
                New System.Data.SqlClient.SqlCommand( _
                "BACKUP DATABASE [" & DatabaseName & "] TO DISK = '" & BackupFilePath & "'", _
                sqlConnection)
  
  Try
  
    ' Definierte Verbindung öffnen und Kommando ausführen:
    sqlConnection.Open()
    sqlCommand.ExecuteNonQuery()
    BackupSqlDatabase = True

  Catch ex As Exception ' Fehler?
  
    ' ... Fehlerabhandlung nach Belieben
  
  Finally
  
    ' Ggf. offene Verbindung schließen
    If sqlConnection.State <> ConnectionState.Closed Then
      sqlConnection.Close()
    End If
  
  End Try
  
End Function

Das Zurückschreiben der Datei in den Microsoft Datenbankserver ist nicht komplizierter - tatsächlich ist im folgenden Code ausschließlich das SQL-Statement entsprechend geändert worden:

Public Function RestoreSqlDatabase(ByVal ConnectionString As String, _
                                   ByVal DatabaseName As String, _
                                   ByVal BackupFilePath As String _
                                   ) As Boolean
  ' Schreibt eine gültige Backup-Datei zurück in eine SQL Server Datenbank.
  ' ConnectionString: Verbindungsstring zur Datenbank,
  ' z.B. "server=(local); user id=sa; password=; Database=Nordwind;"
  ' DatabaseName: Name der Datenbank im SQL Server, z.B. "Nordwind"
  ' BackupFilePath: Kompletter Pfad der Backup-Datei
  
  ' SQL-Verbindung definieren, Kommando erzeugen:
  Dim sqlConnection As System.Data.SqlClient.SqlConnection = _
                   New
System.Data.SqlClient.SqlConnection(ConnectionString)
  Dim sqlCommand As System.Data.SqlClient.SqlCommand = _
                New System.Data.SqlClient.SqlCommand( _
                "RESTORE DATABASE [" & DatabaseName & "] FROM DISK = '"
& BackupFilePath & "'", _
                sqlConnection)
  
  Try
  
    ' Definierte Verbindung öffnen und Kommando ausführen:
    sqlConnection.Open()
    sqlCommand.ExecuteNonQuery()
    RestoreSqlDatabase = True
  
  Catch ex As Exception ' Fehler?
  
    ' ... Fehlerabhandlung nach Belieben
  
  Finally
  
    ' Ggf. offene Verbindung schließen
    If sqlConnection.State <> ConnectionState.Closed Then
      sqlConnection.Close()
    End If
  
  End Try
  
End Function

Mathias Schiffer widmet sich als freier Softwareentwickler und Technologievermittler größeren Projekten ebenso wie arbeitserleichternden Alltagslösungen. Seit Jahren gibt er sein Wissen in unzähligen Publikationen auch an andere Entwickler und Entscheider weiter. Sie erreichen ihn per E-Mail an die Adresse Schiffer@mvps.org .


Anzeigen:
© 2016 Microsoft