Script par lots pour sauvegarder toutes vos bases de données SQL Server
Nous avons déjà expliqué comment sauvegarder une base de données SQL Server à partir de la ligne de commande. Que faire si vous voulez 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, nous allons créer un script batch qui s'adaptera à votre serveur SQL Server au fur et à 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
SETLOCALREM Obtenir la date au format AAAA-MM-JJ (en supposant que les paramètres régionaux sont les États-Unis)
FOR / F «jetons = 1, 2, 3, 4 delims = /» %% A IN ('Date / T') DO SET SET NowDate = %% D - %% B - %% CREM Construire une liste de bases de données à sauvegarder
SET DBList =% SystemDrive% SQLDBList.txt
SqlCmd -E -S MonServeur -h-1 -W -Q “SET NoCount ON; SELECT Nom FROM master.dbo.sysDatabases WHERE [Nom] NOT IN ('maître', 'modèle', 'msdb', 'tempdb') ">"% DBList% "REM Sauvegarder chaque base de données en ajoutant la date au nom du fichier
FOR / F “jetons = *” %% I IN (% DBList%) DO (
Base de données de sauvegarde ECHO: %% I
SqlCmd -E -S MyServer -Q “BASE DE DONNEES DE SAUVEGARDE [%% I] TO Disk =" D: Sauvegarde% NowDate% _ %% I.bak "”
ÉCHO.
)REM Nettoyer le fichier temporaire
SI EXIST «% DBList%» DEL / F / Q «% DBList%»ENDLOCAL
En supposant que la date est 13/01/2009 et que vous avez 3 bases de données nommées "MyDB", "AnotherDB" et "Nom de la base de données avec espaces", 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. Voici ce que vous devez faire:
- Si les paramètres régionaux de votre ordinateur ne sont pas définis aux États-Unis, la commande "Date / T" peut ne pas renvoyer la date au format "Mar 13/01/2009". Si c'est le cas, la variable NowDate ne produira pas le format souhaité et devra être ajustée. (1 place)
- Changez 'MyServer' pour qu'il soit le nom de votre serveur SQL (ajoutez le nom de l'instance si nécessaire). (2 places)
- Les bases de données nommées 'master', 'model', 'msdb' et 'tempdb' sont des bases 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)
- Modifiez l'emplacement de sauvegarde de «D: Sauvegarde» à 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 traitement par lots, programmez-le pour s'exécuter via le Planificateur de tâches Windows en tant qu'utilisateur disposant de droits d'administrateur..