Skip to main content

Script par lots pour sauvegarder toutes vos bases de données SQL Server

Script par lots pour sauvegarder toutes vos bases de données SQL Server

Geoffrey Carr

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, nous créerons un script de traitement par lots qui s'adaptera à votre serveur SQL Server à mesure que de nouvelles bases de données seront ajoutées et supprimées.

Pour aller droit au but, voici le script de sauvegarde:

@ECHO OFF SETLOCAL

REM Get date in format YYYY-MM-DD (assumes the locale is the United States) FOR /F “tokens=1,2,3,4 delims=/ ” %%A IN (‘Date /T’) DO SET NowDate=%%D-%%B-%%C

REM Build a list of databases to backup SET DBList=%SystemDrive%SQLDBList.txt SqlCmd -E -S MyServer -h-1 -W -Q “SET NoCount ON; SELECT Name FROM master.dbo.sysDatabases WHERE [Name] NOT IN (‘master’,’model’,’msdb’,’tempdb’)” > “%DBList%”

REM Backup each database, prepending the date to the filename FOR /F “tokens=*” %%I IN (%DBList%) DO ( ECHO Backing up database: %%I SqlCmd -E -S MyServer -Q “BACKUP DATABASE [%%I] TO Disk=’D:Backup%NowDate%_%%I.bak'” ECHO. )

REM Clean up the temp file IF 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 sur les États-Unis, la commande ‘Date / T’ peut ne pas renvoyer la date au format «Mardi 13/01/2009». Si c'est le cas, la variable NowDate ne produira pas le format souhaité et devra ê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 «maître», «modèle», «msdb» et «tempdb» sont des bases livrées avec SQL Server. Vous pouvez ajouter d'autres noms de base de données à cette liste si vous ne souhaitez pas qu'ils soient sauvegardés. (1 place)
  • Modifiez l’emplacement de la 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 traitement par lots, programmez-le pour qu'il s'exécute via le Planificateur de tâches Windows en tant qu'utilisateur disposant de droits d'administrateur.

Link
Plus
Send
Send
Pin