SQL Server – Automatisches Backup von Datenbanken

Für Backups der SQL-Datenbanken können die SQL-Server Bordmittel verwendet werden.

Die hier gezeigte Methode sichert die SQL-Datenbanken täglich auf eine Netzwerkfreigabe.

Für das Wiederherstellen der Datenbanken eignet sich die Methode hier.

Lösung

Das SQL Management Studio öffnen und mit dem SQL-Server verbinden.

Hinweis: Der für das weitere Vorgehen verwendete Benutzer muss Schreibrechte auf der Netzwerkfreigabe besitzen, sowie Leserechte auf den Datenbanken.

Anschließend, wenn nicht schon passiert, den SQL Server-Agent starten und mit einem Rechtsklick auf Aufträge den Punkt Neuer Auftrag wählen.

Im Reiter Allgemein einen Namen vergeben und in den Reiter Schritte wechseln.

Dort auf Neu klicken und im neuen Fenster einen Schrittnamen vergeben. Anschließend den Code aus SQL Backup Skript – Netzwerkfreigabe einfügen (den Backup-Pfad natürlich ändern) und mit OK bestätigen.

DECLARE @name NVARCHAR(256) -- database name  
DECLARE @path NVARCHAR(512) -- path for backup files  
DECLARE @fileName NVARCHAR(512) -- filename for backup  
DECLARE @fileDate NVARCHAR(40) -- used for file name
 
-- specify database backup directory
SET @path = '\\smbshare\sicherung\sql\'  
 
-- specify filename format
SELECT @fileDate = CONVERT(NVARCHAR(20),GETDATE(),112) + '_' + REPLACE(CONVERT(NVARCHAR(20),GETDATE(),108),':','')
 
DECLARE db_cursor CURSOR READ_ONLY FOR  
SELECT name 
FROM master.sys.databases 
WHERE name NOT IN ('master','model','msdb','tempdb')  -- exclude these databases
AND state = 0 -- database is online
AND is_in_standby = 0 -- database is not read only for log shipping
 
OPEN db_cursor   
FETCH NEXT FROM db_cursor INTO @name   
 
WHILE @@FETCH_STATUS = 0   
BEGIN   
   SET @fileName = @path + @name + '_' + @fileDate + '.BAK'  
   BACKUP DATABASE @name TO DISK = @fileName  
 
   FETCH NEXT FROM db_cursor INTO @name   
END   
 
CLOSE db_cursor   
DEALLOCATE db_cursor

Im Reiter Zeitpläne auf Neu klicken und einen Auftragszeitplan erstellen. In diesem Fall täglich um 18Uhr.

Optionales

Es besteht die Möglichkeit die Sicherung nicht nur auf eine Netzwerkfreigabe durchzuführen, sondern auch lokal. Dafür muss ein zweiter Auftragsschritt erstellt werden und der Backup-Pfad im SQL-Script geändert werden.

-- specify database backup directory<br>SET @path = 'B:\Backup'

Außerdem kann in den Auftragseigenschaften eine E-Mail Benachrichtigung über den Auftragsstatus eingerichtet werden.

Dazu in die Auftragseigenschaften gehen und im Reiter Warnungen den Punkt Hinzufügen wählen. Dort einen Namen vergeben.

In den Reiter Antwort wechseln und dort unter Operatoren benachrichtigen den Punkt E-Mail für den entsprechenden Operator aktivieren.

Zuletzt in Optionen den Punkt E-Mail aktivieren und alle Fenster mit OK schließen.