Comment planifier et automatiser les sauvegardes de bases de données avec SQL Express

Traductions disponibles Traductions disponibles
Numéro d'article: 2019698 - Voir les produits auxquels s'applique cet article
Agrandir tout | Réduire tout

Résumé

Éditions SQL Server Express n'offrent pas un moyen de planifier des travaux ou des plans de maintenance, car le composant de SQL Server Agent n'est pas inclus dans ces éditions. Par conséquent, vous devez adopter une approche différente pour sauvegarder vos bases de données lorsque vous utilisez ces éditions.   

Actuellement les utilisateurs de SQL Server Express peuvent sauvegarder leurs bases de données à l'aide d'une des méthodes suivantes :

Utilisez SQL Server Management Studio Express. Il est installé avec SQL Server Express Advanced Services ou SQL Server Express Shared Computer Toolkit. Pour plus d'informations, consultez le site Web Microsoft Developer Network (MSDN) suivant :

Créer une sauvegarde complète de base de données (SQL Server)

  • Utiliser un script Transact-SQL qui utilise la famille de sauvegarde de base de données des commandes. Pour plus d'informations, accédez au site Web MSDN suivant :

    SAUVEGARDE (Transact-SQL)

    Cet article décrit comment utiliser un script Transact-SQL avec le Planificateur de tâches Windows pour automatiser les sauvegardes de bases de données SQL Server Express sur une base planifiée.

  • Plus d'informations

    Vous devez suivre ces trois étapes pour sauvegarder vos bases de données SQL Server à l'aide du Planificateur de tâches de Windows :

    Étape A: utiliser SQL Server Management Studio Express ou Sqlcmd pour créer la procédure stockée suivante dans votre base de données master :

    Copyright © Microsoft Corporation.  Tous droits réservés.

    Ce code publié selon les termes de la

    / / Licence publique de Microsoft (MS-PL, http://opensource.org/licenses/ms-pl.html.)

    Utilisation [master]
    GO 
    / *** Objet : StoredProcedure [dbo].[sp_BackupDatabases] *** /
    option SET ANSI_NULLS ON
    Aller
    SET QUOTED_IDENTIFIER ON
    Aller
    --===
    --auteur : Microsoft
    --date de création : 06-02-2010
    --Description : bases de données de sauvegarde pour SQLExpress
    --paramètre1 : databaseName
    --paramètre2 : type_sauvegarde F = complet, D = différentielle, L = journal
    --paramètre3 : emplacement du fichier de sauvegarde
    --===
    CREATE PROCEDURE [dbo]. [sp_BackupDatabases]
    @databaseName sysname = null,
    @backupType char (1),
    @backupLocation nvarchar(200)
    en tant que
    SET NOCOUNT ON; 
               
                DECLARE @DBs TABLE
                (
                      ID int IDENTITY PRIMARY KEY,
                      DBNAME nvarchar(500)
                )
               
                 -- Pick out only databases which are online in case ALL databases are chosen to be backed up
                 -- If specific database is chosen to be backed up only pick that out from @DBs
                INSERT INTO @DBs (DBNAME)
                SELECT Name FROM master.sys.databases
                where state=0
                AND name=@DatabaseName
                OR @DatabaseName IS NULL
                ORDER BY Name
               
                -- Filter out databases which do not need to backed up
                IF @backupType='F'
                      BEGIN
                      Supprimer @DBs où dans DBNAME ('tempdb », « Northwind », 'pubs', 'AdventureWorks')
    fin
    ELSE IF @backupType = avait '
    commencer
    @DBs supprimer où dans DBNAME ('tempdb', 'Comptoirs', 'pubs', 'master', 'AdventureWorks')
    fin
    ELSE IF @backupType = 'L'
    commencer
    @DBs supprimer où dans DBNAME ('tempdb', 'Comptoirs', 'pubs', 'master', 'AdventureWorks')
    fin
    ELSE
    commencer
    retourner
    fin
    --déclarer des variables
    varchar (100) DECLARE @BackupName
    varchar (100) DECLARE @BackupFile
    DECLARE @DBNAME varchar(300)
    DECLARE @sqlCommand NVARCHAR(1000)
    DECLARE @dateTime nvarchar (20)
    @ boucle déclarer int
    --effectue une boucle sur les bases de données une par une
    sélectionnez @ boucle = min(ID) de @DBs
    lors de la @Loop est pas NULL
    commencer
    --les noms de base de données doit être en format [dbname] dans la mesure où certaines ont - ou _ dans leur nom de
          Ensemble @DBNAME = '[' +(SELECT DBNAME FROM @DBs WHERE ID = @Loop) +']'
    --définir le format de n yyyyhhmmss date et l'heure en cours
    @dateTime jeu de = remplacer (convertir (VARCHAR, GETDATE(),101),'/','') + '_' + remplacer (convertir (VARCHAR, GETDATE(),108),':','')
    --créer le fichier de sauvegarde au format path\filename.extension pour les sauvegardes complète et de journal, diff
    IF @backupType = 'F'
    SET @BackupFile = @backupLocation + remplacer (remplacer (@DBNAME, ' [', ''),'] ','') @dateTime+ + '_FULL_' '.BAK'
    ELSE IF @backupType = avait '
    SET @BackupFile = @backupLocation + remplacer (remplacer (@DBNAME, ' [', ''),'] ','') + '_DIFF_' + @dateTime+ '.BAK'
    ELSE IF @backupType = 'L'
    SET @BackupFile = @backupLocation + remplacer (remplacer (@DBNAME, ' [', ''),'] ','') + '_LOG_' + @dateTime+ '.TRN'
     
    -- Provide the backup a name for storing in the media
          IF @backupType = 'F'
                SET @BackupName = REPLACE(REPLACE(@DBNAME,'[',''),']','') +' full backup for '+ @dateTime
          IF @backupType = 'D'
                SET @BackupName = REPLACE(REPLACE(@DBNAME,'[',''),']','') +' differential backup for '+ @dateTime
          IF @backupType = 'L'
                SET @BackupName = REPLACE(REPLACE(@DBNAME,'[',''),']','') +' log backup for '+ @dateTime
     
    -- Generate the dynamic SQL command to be executed
     
           IF @backupType = 'F' 
                      BEGIN
                   SET @sqlCommand = 'BACKUP DATABASE ' +@DBNAME+  ' TO DISK = '''+@BackupFile+ ''' WITH INIT, NAME= ''' +@BackupName+''', NOSKIP, NOFORMAT'
                      END
           IF @backupType = 'D'
                      BEGIN
                   SET @sqlCommand = 'BACKUP DATABASE ' +@DBNAME+  ' TO DISK = '''+@BackupFile+ ''' WITH DIFFERENTIAL, INIT, NAME= ''' +@BackupName+''', NOSKIP, NOFORMAT'        
                      END
           IF @backupType = 'L' 
                      BEGIN
                   SET @sqlCommand = 'BACKUP LOG ' +@DBNAME+  ' TO DISK = '''+@BackupFile+ ''' WITH INIT, NAME= ''' +@BackupName+''', NOSKIP, NOFORMAT'        
                      END
     
    -- Execute the generated SQL command
           EXEC(@sqlCommand)
     
    -- Goto the next database
    SELECT @Loop = min(ID) FROM @DBs where ID > @Loop
    fin

    Étape B: dans un éditeur de texte, créez un fichier de commandes nommé Sqlbackup.bat, puis copiez le texte à partir d'un des exemples suivants dans ce fichier, en fonction de votre scénario :

    Example1 :Sauvegardes complètes de toutes les bases de données dans l'instance locale nommée de SQLEXPRESS à l'aide de l'authentification Windows

    SQLBackup.bat

    sqlcmd -S. \EXPRESS ? E -Q "EXEC sp_BackupDatabases @backupLocation = a: \SQLBackups\', @backupType = 'F'" 

    Example2 : les sauvegardes différentielles de toutes les bases de données dans l'instance locale nommée de SQLEXPRESS à l'aide d'un SQLLogin et son mot de passe

    SQLBackup.bat

    SQLCMD - U -P SQLLogin mot de passe -S. \SQLEXPRESS -Q "EXEC sp_BackupDatabases @backupLocation = 'D:\SQLBackups', @BackupType = avait '"

    Remarque: shouldhave du SQLLogin au moins le rôle d'opérateur de sauvegarde dans SQL Server.


    Exemple 3:Sauvegardes des journaux de toutes les bases de données dans une instance nommée locale de SQLEXPRESS à l'aide de l'authentification Windows

    SQLBackup.bat

    Sqlcmd -S. \SQLEXPRESS -E -Q "EXEC sp_BackupDatabases @backupLocation = a: \SQLBackups\', @backupType = 'L' »

    L'exemple 4:Sauvegardes complètes de la base de données USERDB dans l'instance de SQLEXPRESS nommé locale à l'aide de l'authentification Windows

    SQLBackup.bat

    Sqlcmd -S. \SQLEXPRESS -E -Q "EXEC sp_BackupDatabases @backupLocation = a: \SQLBackups\', @databaseName = 'USERDB', @backupType = 'F' »

    De même, vous pouvez effectuer une sauvegarde différentielle sauvegarde de USERDB en collant dans serait ' pour le paramètre @backupType et une sauvegarde du journal de USERDB en collant « L » pour le paramètre @backupType .

    Étape c :Planifier une tâche à l'aide du Planificateur de tâches Windows pour exécuter le fichier batch que vous avez créé à l'étape B. Pour ce faire, procédez comme suit :

    1. Sur l'ordinateur qui exécute SQL Server Express, cliquez sur Démarrer, pointez sur Tous les programmes, sur Accessoires, sur Outils système, puis cliquez sur tâches planifiées. 
    2. Double-cliquez sur Ajouter une tâche planifiée. 
    3. Dans l'Assistant tâche planifiée, cliquez sur suivant. 
    4. Tapez SQLBACKUP pour le nom de la tâche et cliquez sur tous les jours, puis cliquez sur suivant. 
    5. Spécifiez les informations pour une planification d'exécution de la tâche. (Nous vous conseillons d'exécuter cette tâche au moins une fois par jour.) Ensuite, cliquez sur suivant.
    6. Dans le champ Entrez le nom d'utilisateur , tapez un nom d'utilisateur, puis tapez un mot de passe dans le champ Entrez le mot de passe .

      Remarque : Cet utilisateur doit au moins être attribué le rôle de BackupOperator au niveau de SQL Server si vous utilisez l'un des fichiers de commandes dans l'exemple 1, 3 ou 4.
    7. Cliquez sur suivant, puis cliquez sur Terminer. 
    8. Exécuter la tâche planifiée au moins une fois afin de vous assurer que la sauvegarde est créée avec succès.

      Remarque :Le dossier de l'exécutable SQLCMD est généralement dans les variables de chemin d'accès du serveur une fois que SQL Server est installé, mais si la variable de chemin d'accès ne comporte pas ce dossier, vous le trouverez sous < emplacement d'installation > \90\Tools\Binn (par exemple : C:\Program Files\Microsoft SQL Server\90\Tools\Binn).

      Être conscient des éléments suivants lorsque vous utilisez la procédure décrite dans cet article :

      • Le service Planificateur de tâches Windows doit être en cours d'exécution au moment où la tâche est planifiée pour s'exécuter. Nous vous conseillons de définir le type de démarrage pour ce service sous la forme automatique. Cela permet de s'assurer que le service va s'exécuter même sur un redémarrage.
      • Il faut beaucoup d'espace sur le lecteur sur lequel les sauvegardes sont écrits. Nous vous recommandons de nettoyer les anciens fichiers dans le dossier de sauvegarde régulièrement pour vous assurer que vous n'exécutez pas suffisamment d'espace disque. Le script ne contient-elle pas la logique de nettoyage des anciens fichiers.

      Références supplémentaires

    Propriétés

    Numéro d'article: 2019698 - Dernière mise à jour: lundi 23 juin 2014 - Version: 2.0
    Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
    • Microsoft SQL Server 2014 Express
    • Microsoft SQL Server 2012 Express
    • Microsoft SQL Server 2008 Express
    • Microsoft SQL Server 2008 Express with Advanced Services
    • Microsoft SQL Server 2005 Express Edition
    • Microsoft SQL Server 2005 Express Edition with Advanced Services
    Mots-clés : 
    kbmt KB2019698 KbMtfr
    Traduction automatique
    IMPORTANT : Cet article est issu d'une traduction automatique réalisée par un logiciel Microsoft et non par un traducteur professionnel. Cette traduction automatique a pu aussi être révisée par la communauté Microsoft grâce à la technologie Community Translation Framework (CTF). Pour en savoir plus sur cette technologie, veuillez consulter la page http://support.microsoft.com/gp/machine-translation-corrections/fr. Microsoft vous propose en effet des articles traduits par des professionnels, des articles issus de traductions automatiques et des articles issus de traductions automatiques révisées par la communauté Microsoft, de manière à ce que vous ayez accès à tous les articles de notre Base de connaissances dans votre langue. Il est important de noter que les articles issus de la traduction automatique, y compris ceux révisés par la communauté Microsoft, peuvent contenir des erreurs de vocabulaire, de syntaxe ou de grammaire. Microsoft ne pourra être tenu responsable des imprécisions, erreurs, ainsi que de tout dommage résultant d?une traduction incorrecte du contenu ou de son utilisation par les clients.
    La version anglaise de cet article est la suivante: 2019698
    L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

    Envoyer des commentaires

     

    Contact us for more help

    Contact us for more help
    Connect with Answer Desk for expert help.
    Get more support from smallbusiness.support.microsoft.com