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

Administration SQL Server Discussion :

[SQL2K5] Script Backup de base de données


Sujet :

Administration SQL Server

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2010
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Mars 2010
    Messages : 95
    Points : 29
    Points
    29
    Par défaut [SQL2K5] Script Backup de base de données
    Bonjour à tous,

    Je viens d'être embauché dans une société de service informatique et nous avons un TRÈS gros client à gérer
    Ce client utilise l'ERP MS Dynamics AX sur plusieurs environnements (TEST, PRé-PRODUCTION, PRODUCTION)...
    Avant de faire des tests ou autre sur un environnement (application de patch etc...) nous faisons un backup (de sécurité) des bases à travers SQL Server 2005 (Clic droit sur la base -> Tasks -> Backup).

    On me demande de créer un script pour "automatiser" le backup et l'enregistrer dans un dossier spécifique de backup (G:/Backups/[Nom de base(+date du jour)])et donc gagner du temps pour notre client.

    Je n'ai jamais créer de script et je ne sais donc par ou commencer.

    J'espere que vous pourrez m'éclairer à ce sujet.

    Cordialement,
    Carla

  2. #2
    Expert éminent sénior
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Points : 12 891
    Points
    12 891
    Par défaut
    Bonjour,

    Voici un script proposé par dbaffaleuf sur un autre post qui correspond à votre besoin :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    declare @bckfile nvarchar(255)
    declare @curdate char(8)
    declare @curtime char(4)
    SELECT @curdate=convert(char(8), getdate(), 112)
    SELECT @curtime=cast(REPLACE(convert(char(6), getdate(),108),':','') AS char(4))
    SELECT @bckfile='G:\BACKUPS\nom_base'+@curdate+@curtime+'.bak'
    BACKUP DATABASE mybase TO disk=@bckfile WITH init, stats
    Il suffit d'exécuter ce script via un job planifié.

    ++

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mars 2010
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Mars 2010
    Messages : 95
    Points : 29
    Points
    29
    Par défaut
    Merci mikedavem pour ta réponse.

    Je suis tombé sur le script en feuilletant le forum avant de poster ma question et je vois donc que ce script réponds à mon besoin.

    Cependant sous SQL Server 2005 je ne sais pas ou créer un job planifié...

    Le script est à coller (format texte) lorsqu'on crée le job?

    Merci

    EDIT: Au cas ou, je ne parle pas de plan de maintenance avec l'assistant de planification de backup par exemple...
    En fait j'aimerai que quand le client veut appliqué un patch par exemple, il me suffit de lancer le script qui me backup ma base. Le plan de maintenance/backup s'execute lui la nuit.
    J'espere avoir été assez claire pour vous...

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    758
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 758
    Points : 1 069
    Points
    1 069
    Par défaut
    http://databases.about.com/od/sqlser...rver_agent.htm

    Typiquement le bout de code se colle dans la capture n°5 de ce tutorial.

    David B.
    David B.

  5. #5
    Nouveau membre du Club
    Inscrit en
    Mars 2010
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Mars 2010
    Messages : 95
    Points : 29
    Points
    29
    Par défaut
    Ok j'ai trouvé comment créer mon job. Je le crée avec mes informations et je vous tiens au courant de ce qu'il en est.

    Merci à vous en tout cas!

  6. #6
    Nouveau membre du Club
    Inscrit en
    Mars 2010
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Mars 2010
    Messages : 95
    Points : 29
    Points
    29
    Par défaut
    J'ai créé mon job et il me retourne une erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Execution of Job 'Backup Database' failed. See the history log for details
    Dans l'historique:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    The job failed. The Job wak invoked by User "moi-meme". The last step to run was step 1 (Backup Database).
    Je clic sur le petit + pour afficher les details de mon erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Execute as user "PAS MOI" Incorret syntax near the keyword 'SELECT'. [SQLSTATE 42000] (Error 156). The step failed
    Pourquoi lorsque dans l'historique le job n'est pas exécuté par moi alors que quand je fais Clic Droit -> Propriété sur le job, le owner est bien MOI
    De plus, ya-t-il une erreur de syntaxe dans le script fourni ci-dessus?

    Merci

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    758
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 758
    Points : 1 069
    Points
    1 069
    Par défaut
    1) Le job plante en raison d'une erreur de syntaxe, merci de renvoyer ce qui a été collé dans la fenêtre Commande de l'étape du job.

    2) Le job est exécuté sous le contexte du compte de service de l'agent, pas du propriétaire.

    David B.
    David B.

  8. #8
    Nouveau membre du Club
    Inscrit en
    Mars 2010
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Mars 2010
    Messages : 95
    Points : 29
    Points
    29
    Par défaut
    Bonjour David,

    Fenêtre Commande de l'étape du job:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    declare @bckfile nvarchar(255)
    declare @curdate char(8)
    declare @curtime char(4)
    SELECT @curdate=convert(char(8), getdate(), 112)
    SELECT @curtime=cast(REPLACE(convert(char(6), getdate(), 108),':','') AS char(4))
    SELECT @bckfile='D:\Backups-Dynamics\DynamicsAxTR'+@curdate+@curtime+'.bak'
    BACKUP DATABASE DynamicsAxTR TO disk=@bckfile WITH init, stats
    2) Le job est exécuté sous le contexte du compte de service de l'agent, pas du propriétaire.
    Comment remédier à cela...?

    Merci

    EDIT: Ne manque-t-il pas une parenthèse dans le 2ème SELECT?

    EDIT #2: C'est bon c'était bien ca, manquait juste la parenthèse qui ferme le cast dans le 2ème SELECT... J'avais mal retapée le script plus haut

    Merci à vous!!!

  9. #9
    Nouveau membre du Club
    Inscrit en
    Mars 2010
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Mars 2010
    Messages : 95
    Points : 29
    Points
    29
    Par défaut
    Re,

    Petite modification...

    J'ai un dossier backup oú sont stocké les backup de ma base.
    J'aimerais que dans ce dossier, lorsque j'execute le script, il me crée des sous dossiers avec entre parenthèse la date du jour.
    Par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    D:\backup-dynamics\nom-de-ma-base (10 Aout)\mon-fichier.bak
    J'ai essayé ca meme si je me doutais de l'erreur qui allait être créée...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    declare @bckfile nvarchar(255)
    declare @curdate char(8)
    declare @curtime char(4)
    SELECT @curdate=convert(char(8), getdate(), 112)
    SELECT @curtime=cast(REPLACE(convert(char(6), getdate(), 108),':','') AS char(4))
    SELECT @bckfile='D:\Backups-Dynamics\DynmicsAxTR ('+@curdate+')\DynamicsAxTR.bak'
    BACKUP DATABASE DynamicsAxTR TO disk=@bckfile WITH init, stats
    ERREUR:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cannot open backup device 'D:\Backup-Dynamics\DynamicsAxTR 20100810\DynamicsAxTR.bak'. Operating system error 3 (the system cannot find thge path specified.).
    Peut-on créer un dossier via le script?

    Merci

  10. #10
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    758
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 758
    Points : 1 069
    Points
    1 069
    Par défaut
    - Le plus simple pour générer des sous répertoires est d'utiliser un plan de maintenance, qui le propose par défaut.
    - Une autre méthode (moins recommandable) est d'utiliser xp_cmdshell pour créer le répertoire, il faut l'activer au niveau de l'instance:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    sp_configure 'xp_cmdshell', 1
    reconfigure
    puis

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    declare @bckfile nvarchar(255)
    declare @bckdir nvarchar(255)
    declare @mkdir nvarchar(255)
    declare @curdate char(8)
    declare @curtime char(4)
    SELECT @curdate=convert(char(8), getdate(), 112)
    SELECT @curtime=cast(REPLACE(convert(char(6), getdate(),108),':','') AS char(4))
    SELECT @bckdir='D:\Backups-Dynamics\DynmicsAxTR'+@curdate+@curtime
    SELECT @bckfile=@bckdir+'\DynmicsAxTR'+@curdate+@curtime+'.bak'
    SELECT @mkdir='mkdir '+@bckdir
    exec xp_cmdshell @mkdir, NO_OUTPUT
    BACKUP DATABASE DynmicsAxTR TO disk=@bckfile WITH init, stats
    David B.
    David B.

  11. #11
    Membre émérite

    Homme Profil pro
    Chargé de Développement et d'Analyse de données
    Inscrit en
    Mars 2010
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé de Développement et d'Analyse de données
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 278
    Points : 2 856
    Points
    2 856
    Par défaut
    Clique Droit sur le job > Proprietés
    Dans la fenêtre qui s'affiche
    Dans le champ propriétaire choisit le compte SQLAgent
    Etienne ZINZINDOHOUE
    Billets-Articles

  12. #12
    Nouveau membre du Club
    Inscrit en
    Mars 2010
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Mars 2010
    Messages : 95
    Points : 29
    Points
    29
    Par défaut
    Merci beaucoup pour ta réponse M. Expert SQL Server =)



    Pourquoi est-ce moins recommandable?

    Et comment l'activer au niveau de l'instance..?

    Désolé David je suis vraiment noob

    EDIT:En fait dans une volonté de sécurité l'équipe de développement de SQL Server a désactivé par défaut cette procédure stockée, qui par la même est source de beaucoup de problèmes de sécurité.

    Ok j'ai compris et je vais donc éviter la création de sous-repertoire.

    Thx all!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Script louche dans base de données
    Par copin dans le forum Général Conception Web
    Réponses: 3
    Dernier message: 09/06/2008, 17h23
  2. Grosse backup de base de données
    Par iowa dans le forum Administration
    Réponses: 4
    Dernier message: 08/04/2008, 13h37
  3. Backup de base de données
    Par pelloq1 dans le forum Requêtes
    Réponses: 3
    Dernier message: 04/03/2008, 12h29
  4. Backup de base de données.
    Par Alexs dans le forum Administration
    Réponses: 7
    Dernier message: 13/02/2006, 17h24
  5. outils de "backup " de base de données
    Par yaobi dans le forum PostgreSQL
    Réponses: 11
    Dernier message: 20/07/2005, 12h39

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