# Backup wiederherstellen

Beim Wiederherstellen (Restore) von Microsoft SQL Datenbanken gibt es verschiedene Möglichkeiten.

<p class="callout info">Soll das Backup auf einem anderen Server wiederhergestellt werden, so sind das Vollbackup und alle darauf folgenden gesicherten Transaktionslogs in das Backupverzeichnis des Zielservers zu übertragen. Anschließend kann wie unten gezeigt das Backup wiederhergestellt werden.</p>

# Restore eines Vollbackups
Dies ist der einfachste Fall, eine Datenbank wird einfach aus einer .bak Datei wiederhergestellt. Dies geht einfach und schnell.
1. Microsoft SQL Server Management Studio öffnen und in Server einloggen
2. Rechtsklick auf _Databases_ -> _Restore Database..._
3. Danach folgende Schritte umsetzen (1 - 5)
	1. im Reiter _General_ unter _Source_ von _Database:_ auf _Device:_ wechseln
	2. die 3 Punkte auswählen
	3. mit _Add_ den Dialog zum Auswählen der Backup Datei öffnen
	4. den Order der Backups auswählen
	5. die Backup Datei auswählen und mit _OK_ bestätigen

[![](https://jaeckel.one/uploads/images/gallery/2024-04/scaled-1680-/image-1711989175010.png)](https://jaeckel.one/uploads/images/gallery/2024-04/image-1711989175010.png)

4. Es wird nun ein _Backup media:_ angezeigt, dieses nochmal mit _OK_ bestätigen.
5. Nun wird ein Restore Punkt angezeigt, diesen nur noch mit _OK_ bestätigen und danach steht die Datenbank in der Version zur Verfügung.

[![](https://jaeckel.one/uploads/images/gallery/2024-04/scaled-1680-/image-1711989207624.png)](https://jaeckel.one/uploads/images/gallery/2024-04/image-1711989207624.png)

# Restore eines Vollbackups mit Logs
Dieser Fall ist aufwendiger als der einfache Restore eines Vollbackups, aber es kann fast auf die Minute sogar Sekunde genau wiederhergestellt werden. Bei dieser Art des Restores wird zuerst ein Vollbackup eingespielt, danach werden dann die Transaktionslogs eingespielt. Wird z. B. 1x täglich um 20 Uhr ein Vollbackup erstellt und alle 30 Minuten werden die Log Dateien gesichert und abgeschnitten, so kann beispielsweise die Datenbank von 15:30 Uhr wiederhergestellt werden. Eventuell können sogar die Änderungen auf die Minute z. B. 15:35 Uhr eingespielt werden, sofern der Zeitpunkt exakt bekannt ist und das Transaktionslog nicht beschädigt ist, wie im Fall von gelöschten Datensätzen (denn diese sind dann ordnungsgemäß ins Transaktionslog geschrieben).

<p class="callout info">Egal ob das Backup über das Management Studio oder T-SQL eingespielt wird, in beiden Fällen muss das _Recovery Model_ der Datenbank auf _Simple_ gesetzt werden.</p>

## Mit T-SQL
1. Damit das Vollbackup + Logs zurückgespielt werden kann, ist das _Recovery Model_ der Datenbank auf _Simple_ zu setzen.
   ```sql
   USE [master];
   ALTER DATABASE [AdventureWorks2019]
   SET RECOVERY SIMPLE;
	```
2. Nun kann das Vollbackup eingespielt werden, dabei ist insbesondere der Parameter `WITH NORECOVERY` wichtig, da dieser dafür sorgt, dass die Datenbank im Wiederherstellungsmodus bleibt:
   ```sql
   RESTORE DATABASE [AdventureWorks2019]
   FROM DISK = '/backup/FULL/AdventureWorks2019_20230419_171225.bak'
   WITH NORECOVERY
	```
3. Nun werden der Reihe nach alle gesicherten Transaktionslogs eingespielt:
   ```sql
   RESTORE LOG [AdventureWorks2019]
   FROM DISK = '/backup/LOG/AdventureWorks201920230419_171315.trn'
  WITH NORECOVERY
	```
	Dabei ist wichtig, dass solange noch weitere Log Dateien folgen, der Parameter `WITH NORECOVERY` mit übergeben wird.
4. Die letzte Log Datei wird ohne den `WITH NORECOVERY` Parameter eingespielt, damit der Wiederherstellungsprozess ordnungsgemäß beendet wird:
      ```sql
   RESTORE LOG [AdventureWorks2019]
   FROM DISK = '/backup/LOG/AdventureWorks201920230419_171441.trn'
	```
## Mit Management Studio
Tatsächlich erfolgt das Wiederherstellen mittels Management Studio genauso wie bei Restore eines Vollbackups. Es ist nur vorher das Recovery Model zu ändern.