Nous avons déjà expliqué comment sauvegarder une base de données SQL Server à partir de la ligne de commande, que faire si vous souhaitez sauvegarder toutes vos bases de données à la fois? Vous pouvez créer un script batch qui exécute la commande de sauvegarde pour chaque base de données, mais ce script devra être mis à jour chaque fois qu’une base de données est ajoutée ou supprimée. De plus, les sauvegardes de la base de données seront toutes ajoutées à un fichier qui augmentera de la taille de la nouvelle sauvegarde à chaque exécution. Au lieu de cela, dans le vrai mode «définissez-le et oubliez-le», nous créerons un script batch qui s’adaptera à votre serveur SQL à mesure que de nouvelles bases de données seront ajoutées et supprimées.
Pour aller droit au but, voici le script de sauvegarde:
@ÉCHO OFF
SETLOCAL
REM Obtenir la date au format AAAA-MM-JJ (en supposant que les paramètres régionaux sont les États-Unis)
FOR / F « tokens = 1,2,3,4 delims = / » %% A IN (‘Date / T’) DO SET NowDate = %% D – %% B – %% C
REM Construire une liste de bases de données à sauvegarder
SET DBList =% SystemDrive% SQLDBList.txt
SqlCmd -E -S MyServer -h-1 -W -Q “SET NoCount ON; CHOISIR le nom FROM master.dbo.sysDatabases WHERE [Name] NOT IN (‘maître’, ‘modèle’, ‘msdb’, ‘tempdb’) »>«% DBList% »
REM Sauvegardez chaque base de données, en ajoutant la date au nom du fichier
FOR / F « tokens = * » %% I IN (% DBList%) DO (
ECHO Sauvegarde de la base de données: %% I
SqlCmd -E -S MyServer -Q « BASE DE DONNÉES DE SAUVEGARDE [%%I] TO Disk = ‘D: Backup% NowDate% _ %% I.bak’ »
ÉCHO.
)
REM Nettoyer le fichier temporaire
IF EXIST « % DBList% » DEL / F / Q « % DBList% »
ENDLOCAL
En supposant que la date est le 13/01/2009 et que vous disposez de 3 bases de données nommées ‘MyDB’, ‘AnotherDB’ et ‘DB Name with Spaces’, le script produira 3 fichiers à l’emplacement de sauvegarde spécifié:
- 2009-01-13_AnotherDB.bak
- 2009-01-13_DB Nom avec Spaces.bak
- 2009-01-13_MyDB.bak
Personnalisation et exécution du script batch
Bien sûr, vous souhaiterez personnaliser le script en fonction de votre environnement, alors voici ce que vous devez faire:
- Si les paramètres régionaux de votre appareil ne sont pas définis sur les États-Unis, la commande ‘Date / T’ peut ne pas renvoyer la date au format «Tue 01/13/2009». Si tel est le cas, la variable NowDate ne produira pas le format souhaité et doit être ajustée. (1 place)
- Remplacez «MyServer» par le nom de votre serveur SQL (ajoutez le nom de l’instance le cas échéant). (2 places)
- Les bases de données nommées «master», «model», «msdb» et «tempdb» sont des bases de données fournies avec SQL Server. Vous pouvez ajouter des noms de base de données supplémentaires à cette liste si vous ne souhaitez pas qu’ils soient sauvegardés. (1 place)
- Changez l’emplacement de sauvegarde de «D: Backup» à l’emplacement où vous souhaitez stocker les fichiers de sauvegarde de la base de données.
Une fois que vous avez personnalisé le script de commandes, planifiez-le pour qu’il s’exécute via le Planificateur de tâches Windows en tant qu’utilisateur avec des droits d’administrateur et vous êtes prêt.