Einfaches Skript zum Sichern der RA-MICRO-SQL Datenbanken

::Script zur einfachen Sicherung von RA-MICRO Datenbanken
::Das Script muss per Aufgabenplaner direkt auf dem SQL Server ausgeführt werden
::In diesem Beispiel werden die Datenbanken auf das Laufwerk R: im Verzeichnis sql_backup\datenbanken\%Tagesdatum% gesichert, inkl. Verifizierung
::SQL Server Name ist hier SQL-Server\RAMICRO und kann/muss angepasst werden (Zeile 18)
::Im ersten Schritt werden die Odrner r:\sqlbackup\datenbanken erstellt, die vorhandenen RA* Datenbanken ausgelesen und in der Datei r:\sql_backup\datenbanken.txt hinterlegt
::Zweiter Schritt ließt die datenbanken.txt aus uns sichert die hinterlegten Datenbanken nach r:\sqlbackup\Datenbanken\Tagesdatum
::Dateien (Backups) welche älter als 10 Tage sind, werden gelöscht und dazu eine Logdatei unter r:\sql_backup\sql_delete_files_log_%date%.txt erstellt. (Zeile 31)
::Logdateien älter 10 Tage werden auch gelöscht (Zeile 33)

SET DATUM=%date:~-4%%date:~-7,2%%date:~-10,2%
:: Definieren des Backuppfades, in diesem Beispiel R:\sqlbackup\Datenbanken\Tagesdatum
SET BACKUPDIR=r:\sqlbackup\Datenbanken\%DATE%
if not exist %BACKUPDIR% md %BACKUPDIR%

::Ermitteln der Datenbanken welche mit RA anfangen und auf dem hinterlegten SQL Server (SQL-Server\RAMICRO) vorhanden sind – speichern nach r:\sqlbackup\datenbanken.txt
sqlcmd -Q „SELECT name FROM sys.databases where name like ‚RA%%'“ -E -S SQL-Server\RAMICRO -b -o r:\sql_backup\datenbanken.txt

::Sichern der Datenbanken welche in der Datei datenbanken.txt hinterlegt sind
for /f %%i in (r:\sqlbackup\datenbanken.txt) DO (echo %%i|findstr /I /B „RA“>nul && call :BACKUP %%i)

exit

:BACKUP
sqlcmd -Q „BACKUP DATABASE %1 to DISK=’%BACKUPDIR%\%1.bak'“ -E -S VTSRV01\RAMICRO -b -o %BACKUPDIR%\%1output.txt
sqlcmd -Q „RESTORE VERIFYONLY from DISK=’%BACKUPDIR%\%1.bak'“ -o %BACKUPDIR%\%1verify.txt

::Löschen der Backups welche älter als 10 Tage sind (-10) (alle Dateien in allen Ordnern werden gelöscht!) und erstellen einer Logdatei unter R:\sql_backup
forfiles /p R:\sqlbackup\Datenbanken /s /m . /d -10 /c „cmd /c del /q /s @path“ >> „r:\sql_backup\sql_delete_files_log_%date%.txt“
::Löschen der Logdateien welche älter als 10 Tage sind
forfiles /p r:\sql_backup /s /m sql_delete_files_log_*.txt /d -10 /c „cmd /c del /q /s @path“