IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MS SQL Server Discussion :

SQL Server 2005 sauvegarde quotidienne de base de données


Sujet :

MS SQL Server

  1. #1
    Membre habitué

    Profil pro
    Consultant Business Intelligence
    Inscrit en
    Novembre 2005
    Messages
    284
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant Business Intelligence

    Informations forums :
    Inscription : Novembre 2005
    Messages : 284
    Points : 186
    Points
    186
    Par défaut SQL Server 2005 sauvegarde quotidienne de base de données
    Bonjour,

    Je voudrais faire une sauvegarde quotidienne d'une base de donnée pour cela j'ai fait une nouvelle task backup. Puis avec SQL server agent je dis que cette sauvegarde se fasse tout les jours à minuit.
    Le seul problème c'est que la sauvegarde se fait chaque jour avec le même nom. par ex : backup.bak Mais j'aimerai avoir un backup différent pour chaque jour ex backup03.03.08.bak, backup04.03.08.bak etc...et la je vois pas comment faire.

    Et j'aimerai que c'est backup reste 2 semaines. Donc ça j'imagine que il faut utiliser Backup set will expire cocher After et ensuite mettre 14 days?

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 770
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 770
    Points : 52 726
    Points
    52 726
    Billets dans le blog
    5
    Par défaut
    deux possibilités :
    enfiler toutes vos sauvegarde dans une même unité (device).
    faire une procédure en sql dynamique afin de générer un nom de fichier toujours distinct

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Candidat au Club
    Inscrit en
    Décembre 2004
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    -- voici une procedure qui sauvegarde plusieurs bases, les compressent(winrar)

    **********************************************
    **********************************************
    set ANSI_NULLS ON
    set QUOTED_IDENTIFIER ON
    go





    ALTER PROCEDURE [dbo].[SP_System_Sauvegarde_BD]
    /*
    Permet de sauvegarder les bases et logs et de les compresser (CAB)
    de toutes les bases du serveur SQL Server
    */
    @SauvegardeLogs AS int,
    @SauvegardeBases AS int,
    @RepertoireSauvegarde AS VarChar(8000)

    AS

    -----------------------------------------------------------------
    -- Déclaration des Variables
    DECLARE @name sysname
    DECLARE @status int
    DECLARE @TestAutoTruncate bit
    DECLARE @LaRequette varchar(8000)
    DECLARE @DateJour varchar(20)
    DECLARE @Repertoire varchar(8000)
    DECLARE @RepertoireDefaut varchar(100)

    -----------------------------------------------------------------
    -- Initialisation des Variables déclarées
    SET @DateJour = REPLACE(CONVERT(VARCHAR, GetDate(), 103), '/', '_')
    SET @RepertoireDefaut = 'D:\BACKUPBASES\BASES\'

    -----------------------------------------------------------------
    PRINT '-----------------------------------------------------'
    PRINT ' DATE DE LA SAUVEGARDE LANCEE : '+ @DateJour
    PRINT '-----------------------------------------------------'

    -----------------------------------------------------------------
    -- Vérification du paramètre du répertoire des Bases et Logs
    IF RTRIM(@RepertoireSauvegarde) != ''
    BEGIN
    PRINT 'Répertoire Fourni à la SP'
    IF RIGHT(@RepertoireSauvegarde, 1) != '\'
    SET @Repertoire = @RepertoireSauvegarde + '\'
    ELSE
    SET @Repertoire = @RepertoireSauvegarde
    END
    ELSE
    BEGIN
    PRINT 'Répertoire Non Fourni à la SP - Création du répertoire par défaut : '+ @RepertoireDefaut
    SET @LaRequette = 'master.dbo.xp_cmdshell ''MKDIR '+ @RepertoireDefaut +''', NO_OUTPUT '
    PRINT 'Requette : '+ @LaRequette
    EXECUTE (@LaRequette)
    SET @Repertoire = @RepertoireDefaut
    END

    PRINT 'Répertoire de Sauvegarde des Bases et Logs : '+ @Repertoire

    -----------------------------------------------------------------
    -- Déclaration du Curseur sur la liste des Bases de données
    DECLARE TESTCURSEUR CURSOR
    FOR SELECT master.dbo.sysdatabases.name, master.dbo.sysdatabases.status
    FROM master.dbo.sysdatabases
    --WHERE master.dbo.sysdatabases.name IN ('base1',base2',....)

    -- WHERE (master.dbo.sysdatabases.status & 8)!= 8
    -- WHERE master.dbo.sysdatabases.name IN ('BD',....)

    -- Ouverture du Curseur
    OPEN TESTCURSEUR
    FETCH NEXT FROM TESTCURSEUR
    INTO @name, @status

    -- Bouclage sur le curseur défini
    WHILE @@FETCH_STATUS = 0

    BEGIN
    -- Vérifie que la base de transaction n'est pas en mode simple (donc pas de log à sauver)
    SET @TestAutoTruncate = @status & 8

    /*
    -- Suivi des valeurs pour tests
    PRINT 'BASE : '+ @name
    PRINT 'TEST TRUNCATE : '+ CAST(@TestAutoTruncate AS VARCHAR)
    PRINT 'Valeur Status : '+ CAST(@status AS VARCHAR)
    */

    -----------------------------------------------------------------
    -- Vérification de la sauvegarde des Logs de Bases demandée
    IF (@SauvegardeLogs = 1) AND (@TestAutoTruncate = 0)
    BEGIN

    PRINT ''
    PRINT '-----------------------------------------------------'
    PRINT 'BACKUP DU LOG DE LA BASE DE DONNEES : '+ @name

    ----------------- LOGS -----------------------------
    -- Sauvegarde du Log de transaction courant dans le Curseur
    SET @LaRequette = 'USE '+ @name +' EXEC sp_addumpdevice ''DISK'', '''+ @name +'Log'', '''+ @Repertoire + @name +'Log.BAK'' BACKUP LOG '+ @name +' TO '+ @name +'Log'
    PRINT 'Requette : '+ @LaRequette
    EXECUTE (@LaRequette)

    -- Suppression du device déclaré dans la table Master.Sysdevices
    SET @LaRequette = 'USE '+ @name +' EXEC sp_dropdevice '''+ @name +'Log'' '
    PRINT 'Requette : '+ @LaRequette
    EXECUTE (@LaRequette)
    -- Archivage du fichier BAK avec le format Windows CAB
    SET @LaRequette = 'master.dbo.xp_cmdshell ''D:\BACKUPBASES\rar a ' + @Repertoire + @name +'Log_'+ @DateJour +'.rar '+ @name +'Log.BAK '' , NO_OUTPUT '
    PRINT 'Requette : '+ @LaRequette
    EXECUTE (@LaRequette)

    -- Suppression du fichier BAK
    SET @LaRequette = 'master.dbo.xp_cmdshell ''DEL '+ @Repertoire + @name +'Log.BAK'', NO_OUTPUT '
    PRINT 'Requette : '+ @LaRequette
    EXECUTE (@LaRequette)
    END

    -----------------------------------------------------------------
    -- Vérification de la sauvegarde des Bases de données demandée
    IF @SauvegardeBases = 1
    BEGIN
    PRINT ''
    PRINT '-----------------------------------------------------'
    PRINT 'BACKUP DE LA BASE DE DONNEES : '+ @name
    ----------------- BASES ----------------------------
    -- Sauvegarde de la base courante dans le Curseur
    SET @LaRequette = 'USE '+ @name +' BACKUP DATABASE '+ @name +' TO DISK ='''+ @Repertoire + @name +'.BAK'''
    PRINT 'Requette : '+ @LaRequette
    EXECUTE (@LaRequette)

    -- Archivage du fichier BAK avec le format Windows CAB
    SET @LaRequette = 'master.dbo.xp_cmdshell ''D:\BACKUPBASES\rar a '+ @Repertoire + @name +'_'+ @DateJour +'.rar '+ @Repertoire + @name + '.bak'', NO_OUTPUT '
    PRINT 'Requette : '+ @LaRequette
    EXECUTE (@LaRequette)

    -- Suppression du fichier BAK
    SET @LaRequette = 'master.dbo.xp_cmdshell ''DEL '+ @Repertoire + @name +'.BAK'', NO_OUTPUT '
    PRINT 'Requette : '+ @LaRequette
    EXECUTE (@LaRequette)

    END

    PRINT ''
    PRINT '-----------------------------------------------------'

    -----------------------------------------------------------------
    -- Avance le curseur d'un Cran
    FETCH NEXT FROM TESTCURSEUR
    INTO @name, @status

    END

    -----------------------------------------------------------------
    -- Fermeture du Curseur
    CLOSE TESTCURSEUR

    -- Libération de la mémoire prise par le Curseur
    DEALLOCATE TESTCURSEUR

    -----------------------------------------------------------------


    -- Pour lance la procedure : EXEC dbo.SP_System_Sauvegarde_maia 1, 1, ''


    --le fichier rar.exe doit etre sur ''D:\BACKUPBASES
    --Bon courage

  4. #4
    Membre habitué

    Profil pro
    Consultant Business Intelligence
    Inscrit en
    Novembre 2005
    Messages
    284
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant Business Intelligence

    Informations forums :
    Inscription : Novembre 2005
    Messages : 284
    Points : 186
    Points
    186
    Par défaut
    Citation Envoyé par SQLpro Voir le message
    deux possibilités :
    enfiler toutes vos sauvegarde dans une même unité (device).
    faire une procédure en sql dynamique afin de générer un nom de fichier toujours distinct
    A +
    Salut et merci déjà.

    Mais je suis débutant, pour ta première proposition je comprend pas bien ce que tu veux dire et surtout comment s'active cette option.

    Pour ta seconde proposition, j'imagine que ça va dans le sens de la réponse à Mfooty, mais j'imagine que il y a plus simple.

Discussions similaires

  1. Réponses: 2
    Dernier message: 28/06/2017, 11h22
  2. SQL Server 2005 : taille d'une base de données
    Par @yoyo dans le forum Administration
    Réponses: 6
    Dernier message: 17/04/2009, 11h43
  3. [SQL SERVER 2005] comment créer une base de données ?
    Par Syrrus dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 13/03/2007, 14h26
  4. [C#/SQL Server 2005] Comment créer une base de donnée par le code ?
    Par FraktaL dans le forum Accès aux données
    Réponses: 4
    Dernier message: 09/09/2006, 17h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo