Donnerstag, 18. Februar 2010

SMSQL: Backup-History aufräumen

Bei einer Sicherung der MSSQL-DBs mit dem NetApp SnapManager for SQL, werden bei jeder Ausführung Informationen in die MSDB gespeichert. Nach ein paar Monaten (und > 1000facher Ausführung) kann diese DB deshalb gerne mal um ~100MB anwachsen. Da die MSDB als Systemdatenbank wiederum per Stream-Backup ins SnapInfo-Volume jedesmal voll gesichert wird, können diese 100MB schnell mal zu mehreren GB an Backupdaten führen.

Durch einen wöchentlichen Zeitplan mit folgendem SQL-Statement kann dies verhindert werden:
-- Der folgende Befehl löscht die SQL-Backup-History älter 7 Tage
-- Der SnapManager ist eigentlich gar nicht auf diese Informationen angewiesen.
USE MSDB
DECLARE @backup_date DATETIME
BEGIN
set @backup_date=(select dateadd (dd, -7, getDate()))
EXEC SP_DELETE_BACKUPHISTORY @backup_date
END
GO
DBCC SHRINKFILE (N'MSDBData' , 0)
GO
DBCC SHRINKFILE (N'MSDBLog' , 0)
GO



Robocopy für Datenmigrationen

robocopy %source% %destination% /ZB /COPYALL /DCOPY:T /R:0 /W:0 /MIR /LOG:"%userprofile%/Desktop/copy.log" /NP /NDL /TEE


Erklärung:

/Z: kopiert die Dateien im "restartable mode". Sollte eine Übertragung scheitern, aus welchem Grund auch immer, kann Robocopy die Datei bei der nächsten Ausführung fortsetzen, ohne nochmals die komplette Datei kopieren zu müssen.
/B: Versucht Dateien, mit den Backup-Operator-Privilegien zu kopieren
/COPYALL: Kopiert alle Dateiattribute mit
/DCOPY:T: Übernimmt die Zeitstempel der Verzeichnisse
/R:0 /W:0 : Macht sofort weiter wenn eine Datei im Zugriff sein sollte
/MIR: Macht das Ziel zu einem 1:1 Abbild der Quelle
/LOG:"%userprofile%/Desktop/copy.log": Erstellt ein Log auf dem Desktop
/NP: Gibt im Log keine Prozentzahlen aus
/NDL: Schreibt nicht die ganzen Ordnernamen ins LOG (Log wird kleiner)
/TEE: Gibt trotz Logging die Informationen am Bildschirm aus


Optional:
/XD Verzeichnis1 Verzeichnis2: Schliesst die Verzeichnisse in der Liste aus