Sauvegarde d’une base de données dans SQL Server Express

En absence de plans de maintenance, d’agent SQL Server et de jobs, vous devez recourir à la construction de scripts en vue de la sauvegarde des bases de données d’une instance SQL Server Express.

La sauvegarde d’une base de données

Une sauvegarde complète doit être planifiée toutes les 24 heures. Le script nettoie les fichiers de sauvegarde de plus de 7 jours. Ce script doit être planifié à l’aide du planificateur de tâches Windows. Pour rappel, la commande sqlcmd.exe est présente sur votre système après installation de SSMS sur votre machine.

@echo off
FOR /F "TOKENS=1 DELIMS=/ " %%A IN ('DATE/T') DO SET dd=%%A
FOR /F "TOKENS=1,2 DELIMS=/ " %%A IN ('DATE/T') DO SET mm=%%B
FOR /F "TOKENS=1,2,3 DELIMS=/ " %%A IN ('DATE/T') DO SET yyyy=%%C
SET jour=%yyyy%%mm%%dd
sqlcmd -S PORTABLE -E -Q "BACKUP DATABASE [Northwind] TO DISK = N'D:\Backup\northwind\bak\northwind_%jour%.bak' WITH RETAINDAYS = 7, NOFORMAT, NOINIT, NAME = N'Northwind', SKIP, NOREWIND, NOUNLOAD, STATS = 10"
ForFiles /p "D:\Backup\northwind\bak" /s /d -7 /c "cmd /c del @file"
exit

La sauvegarde des journaux de transactions

Le script doit être planifié au niveau du planificateur de tâches toutes les 1, 5, 10, 15, 30, 60 minutes par exemple. Les fichiers de plus de 24 h sont automatiquement effacés par la commande ForFiles. La sauvegarde des journaux de transactions ne peut s’effectuer que si la récupération de la base est en mode complet et à la condition qu’une sauvegarde complète ait été effectuée auparavant.

@echo off
FOR /F "TOKENS=1 DELIMS=/ " %%A IN ('DATE/T') DO SET dd=%%A
FOR /F "TOKENS=1,2 DELIMS=/ " %%A IN ('DATE/T') DO SET mm=%%B
FOR /F "TOKENS=1,2,3 DELIMS=/ " %%A IN ('DATE/T') DO SET yyyy=%%C
FOR /F "TOKENS=1 DELIMS=: " %%A IN ('TIME/T') DO SET HH=%%A
FOR /F "TOKENS=1,2 DELIMS=: " %%A IN ('TIME/T') DO SET mm=%%B
SET jourheure=%yyyy%%mm%%dd%%HH%%mm%
sqlcmd -S PORTABLE -E -Q "BACKUP LOG [Northwind] TO DISK = N'D:\Backup\northwind\trn\northwind_%jourheure%.trn' WITH RETAINDAYS = 1, NOFORMAT, NOINIT, NAME = N'Northwind', SKIP, NOREWIND, NOUNLOAD, STATS = 10"
ForFiles /p "D:\Backup\northwind\trn" /s /d -1 /c "cmd /c del @file"
exit

Base de données  / SQL Server Express