Zum Inhalt

Regelmäßiges Backup der KOMPLETTEN MS SQL Server 2005 Datenbank

Weil Datenbanken, die in Benutzung sind, aus normalen Filebackups nicht immer wiederhergestellt werden können, empfiehlt es sich, täglich / regelmäßig Dumps der Datenbanken in Dateien zu erstellen.

Weil ich das öfter mal brauche und du sicher auch (sonst hättest du diesen Beitrag nicht gegooglet), habe ich dokumentiert wie ich das löse.

Schritt 1) Ordner C:\sqlbackup anlegen

Schritt 2) Datei C:\sqlbackup\dobackup.sql erstellen

DECLARE @DBName varchar(255)

DECLARE @DATABASES_Fetch int

DECLARE DATABASES_CURSOR CURSOR FOR
select
DATABASE_NAME   = db_name(s_mf.database_id)
from
sys.master_files s_mf
where
— ONLINE
s_mf.state = 0

— Only look at databases to which we have access
and has_dbaccess(db_name(s_mf.database_id)) = 1

— Not master, tempdb or model
and db_name(s_mf.database_id) not in ('Master','tempdb','model')
group by s_mf.database_id
order by 1

OPEN DATABASES_CURSOR

FETCH NEXT FROM DATABASES_CURSOR INTO @DBName

WHILE @@FETCH_STATUS = 0
BEGIN
declare @DBFileName varchar(256)
set @DBFileName = datename(dw, getdate()) + ' – ' +
replace(replace(@DBName,':','_'),'\','_')

exec ('BACKUP DATABASE [' + @DBName + '] TO  DISK = N"c:\db backup\' +
@DBFileName + "' WITH NOFORMAT, INIT,  NAME = N"' +
@DBName + '-Full Database Backup", SKIP, NOREWIND, NOUNLOAD,  STATS = 100')

FETCH NEXT FROM DATABASES_CURSOR INTO @DBName
END

CLOSE DATABASES_CURSOR
DEALLOCATE DATABASES_CURSOR

Schritt 3) Datei C:\sqlbackup\dobackup.bat erstellen

osql -Usa -Ppassword -i C:\sqlbackup\dobackup.sql

Anmerkung: in diesem Beispiel lautet der SQL-User "sa" (Standard!) und das Passwort "manager".

Schritt 4) Batch-Script C:\sqlbackup\dobackup.bat per Taskplaner täglich starten

Resultat: Es werden in unserem angelegten Ordner füt jede Datenbank und jeden Wochentag je ein Dump erstellt.  z.B. "Freitag – myDatabase", "Freitag – sdshared", "Freitag – msdb" und so weiter.

Diese Dumps lassen sich übrigens auch mit dem gleichen osql-Befehl wieder in eine Datenbank einlesen (z.B. osql -Usa -Pmanager -i "C:\sqlbackup\Freitag-myDatabase.sql")

Bei Fragen oder Problemen dazu einfach kurz ne Mail schreiben oder gerne auch anrufen (nur keine Hemmungen, ich helfe gerne!). Kontaktdaten unter http://www.feins-it.de

Published inTechTalk

Schreibe den ersten Kommentar

    Schreibe einen Kommentar

    Deine E-Mail-Adresse wird nicht veröffentlicht.

    Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.