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

Table des matières:

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

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

Vidéo: Script par lots pour sauvegarder toutes vos bases de données SQL Server
Vidéo: Jailbreak iOS 9.3.5 pour iPhone 5, 5c, 4S, iPad, iPod touch 5G - YouTube 2024, Avril
Anonim

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.

Conseillé: