michael-20er
Goto Top

Wie SQL Server Express 2005 sichern? Anfügen und Überschreiben mit SQLCMD

Hallo an alle,

folgende Situation:

Wir haben einen SQL Server 2005 Express Edition. Dieser besitzt 2 wichtige für uns Datenbanken.
Da über die Managent Studio Express Software, kein regelmäßiges Backup läuft, muss dies anders erfolgen.

Im Moment läuft es per SQL Script, das mit SQLCMD.exe ausgeführt.
Mit 2 Tasks werden die Datenbanken ( 1x52 und 1x25MB) 2mal in der Woche vollgesichert (ist so gewollt).

Hier eins von den beiden SQL Scripten, das andere unterscheidet sich nur in den Pfad und Dateinamen:

BACKUP DATABASE <databasename> 
TO DISK = 'D:\Ressourcen\Datenbankbackup\Internet\InternetFull.bak'  
WITH NOINIT, NOSKIP, STATS=25, RETAINDAYS = 30;

Mit obigen Script wird die Sicherung immer nur angehängt. Das bedeutet ich habe pro Monat einen Zuwachs von 400 MB bzw. 200 MB. Nach einem Jahr ohne Eingreifen wären die Backupdateien über 4 GB bzw. 2,5GB gross. Da ist aber noch die Begrenzung im SQL Server 2005 Express, ich weiß.

Jetzt würde ich gerne folgende Lösung einbauen:
Um den Speicherbedarf zu begrenzen, würde ich gerne automatisch alle Sicherungen überschreiben bzw. löschen, die älter als 30 Tage sind.

Die Datenbank soll alle abgelaufenen Sicherungen selbstständig aus dem Medium überschreiben, damit kein Admin alle x Monate die Datenbankbacksicherung löschen muss, um die Dateigrösse zu korrigieren, Grösse der Datenbank selbst, wird sich nicht großartig ändern.
Die Datei wird nach der Sicherung per Backup Software über Internet FTP kopiert. (begrenzte Bandbreite und so).
Also es sollen immer nur die 30 letzten Sicherungen à 52MB bzw. 25 MB in dem Medium sein, so dass eine konstante Größe von 400MB bzw. 250 MB entsteht.

Wie kann ich das einstellen?
Ablaufzeitraum= 30 Tage sagt ja aus, das die Datenbank nicht gelöscht wird, solange ein nicht abgelaufenes Element enthalten ist.

Hab hier schon gelesen, aber die Anwendung ist mir noch nicht so richtig klar.
http://msdn2.microsoft.com/de-de/library/ms186865.aspx

Danke schon mal für eure Hilfe.#

Gruß Michi

Content-ID: 81623

Url: https://administrator.de/contentid/81623

Ausgedruckt am: 22.11.2024 um 14:11 Uhr

SvenGuenter
SvenGuenter 26.02.2008 um 13:34:28 Uhr
Goto Top
hi wenn du das so machen willst würde ich an deiner stelle folgendes machen

Schritt 1: Schauen ob im Verzeichnis eine .bak Datei im Verzeichnis mit dem Namen vorhanden ist. Falls ja diese Datei nehen und umbenennen. ( Am sinnigsten wäre es in diesem fall mit dem Namen aktdatum - 7 )

Schritt 2. Wenn datei umbenannt oder nicht vorhanden neue Sicherungsdatei erstellen.

Schritt 3: Alles löschen was älter aktdatum -30

Wenn ich den Ablauf richtig verstanden habe dann schreibe es bitte dann schaue ich mal das ich dir da ein Script bastel ;o)


Gruß

Sven
SvenGuenter
SvenGuenter 26.02.2008 um 17:47:28 Uhr
Goto Top
BACKUP DATABASE [test] TO  DISK = N'c:\Programme\Microsoft SQL   
Server\MSSQL.1\MSSQL\Backup\test.bak' WITH  RETAINDAYS = 30, NOFORMAT, INIT,  NAME =   
N'test-Vollständig Datenbank Sichern', SKIP, NOREWIND, NOUNLOAD,  STATS = 10  

Hier der Code wenn du überschreiben willst. Aber an deiner Stelle würde ich das über das Database Managementtool vom SQL Express machen da kannst du all diese sachen einstellen und direkt als Job laufen lassen.
michael-20er
michael-20er 27.02.2008 um 16:36:24 Uhr
Goto Top
Dieses Database Managementtool wird leider nicht angezeigt. Oder wo finde ich das?
Überschrieben wird ja auch mit dem Bfehl von mir, man muss halt nur die Optionen INIT / Format anpassen
SvenGuenter
SvenGuenter 27.02.2008 um 17:46:13 Uhr
Goto Top
Das kanst du dir von microsoft direkt runterladen und ich kostenlos