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 :

Automatiser un RESTORE


Sujet :

Administration SQL Server

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Décembre 2021
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Canada

    Informations professionnelles :
    Activité : Directeur des systèmes d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2021
    Messages : 6
    Points : 0
    Points
    0
    Par défaut Automatiser un RESTORE
    Bonjour,

    J'aimerais automatiser un restore sur une BD test à partir de mon dernier backup de ma BD prod. Une partie de mon problème est que le nom du fichier du backup change à tous les nuits à cause de la date.

    Merci

  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 768
    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 768
    Points : 52 719
    Points
    52 719
    Billets dans le blog
    5
    Par défaut
    Si c'est sur le même serveur (même instance) alors il suffit de lire les tables de msdb pour savoir quelle est cette dernière sauvegarde et quel est son fichier.

    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
    Nouveau Candidat au Club
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Décembre 2021
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Canada

    Informations professionnelles :
    Activité : Directeur des systèmes d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2021
    Messages : 6
    Points : 0
    Points
    0
    Par défaut
    Oui c'est sur la même instance et serveur. Est-ce que tu as plus d'informations?

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 768
    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 768
    Points : 52 719
    Points
    52 719
    Billets dans le blog
    5
    Par défaut
    Tu trouveras la liste des sauvegardes avec cette requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    SELECT @@SERVERNAME AS SERVER_NAME, 
           BS.database_name, 
           BS.backup_start_date, 
           BS.backup_finish_date, 
           BS.expiration_date, 
           CASE BS.type 
             WHEN 'D' THEN 'Database' 
             WHEN 'L' THEN 'Log' 
           END AS backup_type, 
           BS.backup_size, 
           MF.logical_device_name, 
           MF.physical_device_name, 
           BS.name AS backupset_name, 
           BS.description 
    FROM msdb.dbo.backupmediafamily AS MF 
         INNER JOIN msdb.dbo.backupset AS BS 
            ON MF.media_set_id = BS.media_set_id
    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/ * * * * *

  5. #5
    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
    Hello,

    Tu as les dbatools qui permet de simplifier le travail et notamment la commande Restore-DbaDatabase.
    La commande va soit chercher é reconstituer la chaîne des backups en fonction des fichiers scannés sur le chemin spécifié, soit il fait confiance à l'historique dans msdb via l'option -TrustDbBackupHistory

    ++

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Décembre 2021
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Canada

    Informations professionnelles :
    Activité : Directeur des systèmes d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2021
    Messages : 6
    Points : 0
    Points
    0
    Par défaut
    La commande ressemblerait à quoi si je veux prendre le dernier backup dans un dossier local x et l'importer sur une BD qui n'est pas celle du backup? C'est sûr le serveur de production donc je ne veux vraiment pas me tromper! Notre serveur de dev n'est pas dans la même version pour l'instant donc je ne peux pas tester.

  7. #7
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 768
    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 768
    Points : 52 719
    Points
    52 719
    Billets dans le blog
    5
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    RESTORE nom_de_la_nouvelle_base
    FROM DISK = 'Répertoire\Fichier_de_sauvegarde'
    WITH MOVE 'nom_fichier_logique1' TO 'Emplacement_disque_fichier_physique\nom_Fichier_physique1',
         MOVE 'nom_fichier_logique2' TO 'Emplacement_disque_fichier_physique\nom_Fichier_physique2',
         MOVE ...
    Pour connaître les éléments nécessaire et prendre la dernière sauvegarde FULL d'une base de nom "Ma_base", voici la requête à faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    SELECT TOP 1 
           BS.database_name, 
           MF.physical_device_name AS emplacement_fichier_sauvegarde,
           BF.logical_name,
           BF.logical_name + '.' + PARSENAME(physical_name, 1) AS physical_name
    FROM   msdb.dbo.backupmediafamily AS MF 
           INNER JOIN msdb.dbo.backupset AS BS 
               ON MF.media_set_id = BS.media_set_id
           INNER JOIN msdb.dbo.backupfile AS BF
               ON BS.backup_set_id = BF.backup_set_id
    WHERE  BS.type = 'D'
      AND  BS.database_name = 'master'
    ORDER  BY BS.backup_start_date DESC
    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/ * * * * *

  8. #8
    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
    et avec dbatools:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Restore-DbaDatabase -SqlInstance 'nom_instance' -Path 'Répertoire\Fichier_de_sauvegarde' -DestinationFilePrefix 'nom_de_la_nouvelle_base_' -DatabaseName 'nom_de_la_nouvelle_base' `
    Comme ca tu as les choix de l'outil

    ++

  9. #9
    Nouveau Candidat au Club
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Décembre 2021
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Canada

    Informations professionnelles :
    Activité : Directeur des systèmes d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2021
    Messages : 6
    Points : 0
    Points
    0
    Par défaut
    Est-ce que ça fonctionne si la DB existe déjà? Ce que je dois faire, c'est mettre à jour une DB test à partir des backups de la prod.

  10. #10
    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
    Oui l'idées des 2 commandes proposés est de créer une nouvelle base de données à partir d'un backup d'une base de données existante sur ton serveur.

    ++

  11. #11
    Nouveau Candidat au Club
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Décembre 2021
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Canada

    Informations professionnelles :
    Activité : Directeur des systèmes d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2021
    Messages : 6
    Points : 0
    Points
    0
    Par défaut
    Je ne veux pas créer une nouvelle BD mais écraser une existante. De plus, je ne peux pas un nom de fichier car le nom du fichier change à chaque nuit.

  12. #12
    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
    Ok clarifions un peu le scénario. De ce que je comprends:

    1) DB_PROD -> Backup -> Restore DB_TEST
    2) DB_TEST existe déjà et tu veux remplacer DB_TEST

    Si nous sommes alignés sur le besoin alors les commandes précédentes fonctionnent:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Restore-DbaDatabase -SqlInstance 'nom_instance' -Path 'Répertoire_des_sauvegardes_DB_PROD' -DestinationFilePrefix 'DB_TEST_' -DatabaseName 'DB_TEST'  -WithReplace
    Dans cette commande PowerShell / dbatools, tu n'as pas besoin de connaitre le nom de ton backup (qui change tout le temps). Par défaut, cette commande te restaure les derniers backups

    Avec les scripts fournis par SQLPro, il te faut d'abord utiliser celui-ci pour chercher le dernier backup (que tu peux mettre dans une table temporaire / variable de table)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    SELECT TOP 1 
           BS.database_name, 
           MF.physical_device_name AS emplacement_fichier_sauvegarde,
           BF.logical_name,
           BF.logical_name + '.' + PARSENAME(physical_name, 1) AS physical_name
    FROM   msdb.dbo.backupmediafamily AS MF 
           INNER JOIN msdb.dbo.backupset AS BS 
               ON MF.media_set_id = BS.media_set_id
           INNER JOIN msdb.dbo.backupfile AS BF
               ON BS.backup_set_id = BF.backup_set_id
    WHERE  BS.type = 'D'
      AND  BS.database_name = 'master'
    ORDER  BY BS.backup_start_date DESC
    ... Et ensuite utiliser le script SQL

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    RESTORE DB_TEST
    FROM DISK = 'Répertoire_des_sauvegardes_DB_PROD\Fichier_de_sauvegarde'
    WITH REPLACE, MOVE 'nom_fichier_logique1' TO 'Emplacement_disque_fichier_physique\nom_Fichier_physique1',
         MOVE 'nom_fichier_logique2' TO 'Emplacement_disque_fichier_physique\nom_Fichier_physique2',
         MOVE ...
    Ca demande un peu plus de travail de codage mais ca fonctionne aussi

    ++

  13. #13
    Nouveau Candidat au Club
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Décembre 2021
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Canada

    Informations professionnelles :
    Activité : Directeur des systèmes d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2021
    Messages : 6
    Points : 0
    Points
    0
    Par défaut
    Je m'y approche!! Il me manque seulement comment installer le DBAtools sur un Windows 2008 R2, mais j'ai réussi sur mon Windows 2019!

Discussions similaires

  1. Too Many versions & Backup-Restore à rallonge
    Par Harry dans le forum Administration
    Réponses: 14
    Dernier message: 30/06/2004, 18h10
  2. [Debutant]Back up et restore
    Par christophebmx dans le forum Administration
    Réponses: 2
    Dernier message: 22/05/2004, 15h53
  3. Automatisation et/ou installer pour une bd sql
    Par ZePitou dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 22/02/2004, 12h54
  4. [MAPI][info] automatisation des taches de messagerie
    Par peppena dans le forum Windows
    Réponses: 6
    Dernier message: 22/01/2004, 16h06
  5. Automatiser la mise à jour de la bD SQL SERVER from Access
    Par Nadaa dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 11/11/2003, 15h23

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