Page d'accueil » comment » 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

    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
    SETLOCAL

    REM 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 - %% C

    REM 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..