1. Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies. En savoir plus.
  2. Bonjour tout le monde ! Veillez consulter la Politique de forum pour comprendre nos règles, Merci a vous !
    Rejeter la notice

TUTO MS SQL SERVER : Archivage BDD par programmation

Discussion dans 'Base de donnés & HFSQL' créé par khaery, Juin 12, 2018.

  1. khaery

    khaery New Member
    WXG 23

    Inscrit:
    Mar 7, 2018
    Messages:
    23
    J'aime reçus:
    23
    Bonjour a tous
    je vais vous présenter une méthode d'archivage de BDD SQL SERVER par programmation sur 3 étapes : Sauvegarde , consultation et restauration

    1 - Sauvegarde :

    le backup va être crée dans le serveur BDD dans le chemain sDossBackup
    Code (Windev):

    sReq est une chaîne =
    [
       USE MASTER
        DECLARE @BACKUPDESTINATION VARCHAR(500) = '%2';
        DECLARE @MyBACKUP VARCHAR(MAX)='%1_'+REPLACE(REPLACE(CONVERT(VARCHAR(16), GETDATE(), 120 ),' ','_' ),':','-')+'.BAK'
        SET NOCOUNT ON;
        DECLARE @DIRECTORYEXISTS INT;
        EXEC MASTER.DBO.XP_FILEEXIST @BACKUPDESTINATION, @DIRECTORYEXISTS OUT;
        IF @DIRECTORYEXISTS = 0 EXEC MASTER.SYS.XP_CREATE_SUBDIR @BACKUPDESTINATION;
        SET NOCOUNT OFF;
        SET @BACKUPDESTINATION=@BACKUPDESTINATION+'\'+@MyBACKUP ;
        BACKUP DATABASE %1 TO DISK =@BACKUPDESTINATION ;
        USE %1
        SELECT @BACKUP AS MyBACKUP

    ]
    sReq=

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (sReq,sBaseDeDonnées ,sDossBackup )
    mareq est Source de Données
    SI PAS

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (mareq,CONNEXION_DATA,hRequêteSansCorrection,sReq) ALORS
       

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    )
    SINON
       

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (mareq)
       

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (mareq.MyBACKUP +" a été crée avec sucés ")
        RemplireBackUps()
     
    FIN
     
    2 Consultation :

    le procédure RemplireBackUps c'est pour consulter la liste des backup enregistrés dans le serveur et remplire le TABLE_Archive :
    Code (Windev):

    PROCEDURE RemplireBackUps()

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (TABLE_Archive)
    sReq est une chaîne=
    [
    use master
        DECLARE @TF TABLE (FNAME VARCHAR(256), FDATE DATETIME2(0))
        DECLARE @T TABLE (F VARCHAR(512));
        DECLARE @COM VARCHAR(1048);
        DECLARE @DIR VARCHAR(1048)='%1\';
        SET @COM = ' DIR "' + @DIR
        + CASE
        WHEN SUBSTRING(@DIR, LEN(@DIR), 1) = '\'
        THEN ''
        ELSE '\'
        END + '*.*"
    ';
     
        INSERT INTO @T
        EXEC xp_cmdshell @COM;
     
        DELETE FROM @T WHERE F IS NULL OR SUBSTRING(F, 1, 1) = ' ';
        DELETE FROM @T WHERE SUBSTRING(F, 22, 5) = '<REP>';
        DELETE FROM @T WHERE F NOT LIKE '%.bak';
        SET DATEFORMAT DMY;
     
        INSERT INTO @TF
        SELECT SUBSTRING(F, 37, 475),
        REPLACE(SUBSTRING(F, 1, 17), '  ', ' ')
     
        FROM   @T;
        SELECT * FROM @TF ORDER BY FDATE DESC
        use %2
    ]

    mareq est une Source de Données
    sReq=

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (sReq,sDossBackup,sBaseDeDonnées)
      SI PAS

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (mareq,CONNEXION_DATA,hRequêteSansCorrection+hSansBind,sReq) ALORS
         

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    ())
          RETOUR
      FIN
    POUR TOUT mareq
       

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (TABLE_Archive,mareq.FNAME,

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (mareq.FDATE,8))+" "+

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (mareq.FDATE,9),"HH:MM"))  
    FIN[/windev]
     
    3 Restauration :
    lors de de double click sur une colonne de table archive on va restaure le backup enregister dans le colonne COL_BakUP de table
    Code (Windev):

        sReq  =
        [
           USE MASTER
            declare @mdf VARCHAR(MAX)
            declare @ldf VARCHAR(MAX)
            SELECT  @mdf =
            (SELECT sys.master_files.physical_name FROM sys.master_files WHERE RIGHT(sys.master_files.physical_name,3) = 'mdf' AND sys.databases.database_id = sys.master_files.database_id),
            @ldf =
            (SELECT sys.master_files.physical_name FROM sys.master_files WHERE RIGHT(sys.master_files.physical_name,3) = 'ldf' AND sys.databases.database_id = sys.master_files.database_id)
            FROM sys.databases
            WHERE name ='%1'
            GROUP BY sys.databases.name, sys.databases.database_id
       
            ALTER DATABASE %1 SET SINGLE_USER WITH ROLLBACK IMMEDIATE ;
            RESTORE DATABASE %1 FROM DISK = '%2'
            WITH MOVE '%1' TO @mdf,
            MOVE '%1_log' TO @ldf
            ,REPLACE ;
            ALTER DATABASE SAVE_CRUISE SET MULTI_USER;
            USE %1

        ]

        sReq=

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (sReq,mabase,

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (sDossBackup)+COL_BakUP)
       

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (mareq,CONNEXION_DATA,hRequêteSansCorrection+hSansBind,sReq)
       

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    ("Restauration terminé !! ")
     


    j'attend vos remarques

    bonne lecture



     
  2. Kelard

    Kelard Active Member
    MEMBRE WX

    Inscrit:
    Avr 6, 2018
    Messages:
    103
    J'aime reçus:
    134
    Merci du partage, je garde ça au chaud dans ma poche. :)
     
  3. khaery

    khaery New Member
    WXG 23

    Inscrit:
    Mar 7, 2018
    Messages:
    23
    J'aime reçus:
    23
    De rien les amis

    une remarque a propos de l’étape Consultation
    la fonction xp_cmdshell
    elle permet a sql server d'exécuter de fonctions Windows j'ai l'utilise ici pour consulter le répertoire de sauvegardes a travers la fonction Windows DIR

    parfois sql server bloque cette fonction par défaut et un message d'erreur a cause de ça
    Cette requête va arranger l'erreur


    EXEC sp_configure 'show advanced options', 1
    GO
    RECONFIGURE
    GO
    EXEC sp_configure 'xp_cmdshell', 1
    GO
    RECONFIGURE
    GO
     

Partager cette page

Chargement...