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

VB.NET Discussion :

Sauvegarde/Restauration BD SqlServer depuis appli VB.NET


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de droliprane
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2005
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2005
    Messages : 710
    Par défaut Sauvegarde/Restauration BD SqlServer depuis appli VB.NET
    Bonjour à tous,

    cette question aurait aussi bien ça place dans la section Sql Server mais je poste ici quand meme parce que la nécessité de pouvoir le faire depuis l'applicatif VB.NET est primordiale.

    Donc je développe un petit module qui devrait permettre de faire des sauvegardes et restaurations à chaud de la base SqlServer utilisé par mon appli. Je sauvegarde ma base de cette manière :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Dim Sql, nomfichier As String
    nomfichier = "SAV" & Now.ToString("s").Replace(":", "-")
     
    ConnectBD(Conn)
    Sql = "BACKUP DATABASE GPAO TO DISK=N'" & depot & nomfichier & ".bak '"
    Conn.Execute(Sql)
    DeconnectBD(Conn)
    Ce code me génère donc un fichier .bak dans un dépot qui rassemble toutes les sauvegardes.

    Pour charger (et donc remplacer ma base courante), je procède comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Dim Sql, nomfichier As String
    nomfichier = backups.GetItemText(backups.SelectedItem)
     
    ConnectBD(Conn)
    ' KILL DE TOUTES LES CONNEXIONS ACTIVES A LA BASE
    'Sql = " SELECT 'kill', spid FROM sysprocesses WHERE dbid=db_id('GPAO');"
    'Conn.Execute(Sql)
     
    ' EXECUTE LA RESTAURATION
    Sql = "RESTORE DATABASE GPAO FROM DISK=N'\\serveurfm\d\bob\backup\" & nomfichier & "';"
    Conn.Execute(Sql)
    DeconnectBD(Conn)
    Quand je tente un chargement d'une sauvegarde, j'ai le message suivant :

    Impossible de remplacer le fichier 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\GPAO.mdf' car il est utilisé par la base de données 'GPAO'.
    Effectivement, pour pouvoir exécuter ma requete RESTORE, j'utilise une connexion à cette meme base GPAO (je vous mettrai ma procédure ConnectBD si nécessaire)... Donc j'imagine qu'il n'est pas capable de remplacer la base de données GPAO puisque je suis actuellement connecté dessus !

    Mais comment faire dans ce cas ?

    Merci pour votre aide.

    Bob

  2. #2
    Membre éclairé Avatar de droliprane
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2005
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2005
    Messages : 710
    Par défaut
    Bon, il y a du nouveau,

    j'ai changé la chaine de connexion, avant je me connectais directement sur ma bd GPAO, maintenant je pointe sur MASTER. Et j'ai le message suivant :

    Impossible d'obtenir l'accès exclusif car la base de données est en cours d'utilisation.

    C'est le serpent qui se mord la queue !!

    Comment est-ce que je peux leurrer le server SQL et exécuter cette fichue requete RESTORE ?

  3. #3
    Membre averti
    Inscrit en
    Décembre 2007
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 23
    Par défaut
    Salam (Bonjour)

    je crois qu'il faut exécuté cette requête avant de faire la restauration
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER DATABASE labasededonnees SET SINGLE_USER WITH ROLLBACK IMMEDIATE
    j'ai déjà eu ce problème et je l'ai résolu par cette méthode

  4. #4
    Membre éclairé Avatar de droliprane
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2005
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2005
    Messages : 710
    Par défaut
    Avant de partir au boulot j'étais plus ou moins parvenu à une solution en faisant :

    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
    ConnectMaster(Conn)
     
    Sql = "SELECT spid FROM sysprocesses WHERE dbid=db_id('GPAO');"
    Rs.Open Sql, Conn
    do while not Rs.eof
        Conn.Execute("KILL " & Rs("spid").value & ";")
        Rs.MoveNext()
    Loop
    Rs.Close
     
    ' Ensuite la restauration est possible
    Sql = "RESTORE DATABASE GPAO FROM DISK=N'\\serveurfm\d\bob\backup\" & nomfichier & "';"
    Conn.Execute(Sql)
     
    DeconnectBD(Conn)
    Maintenant peut-être que le ALTER est plus rapide ou performant, je teste demain matin.

    Merci

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

Discussions similaires

  1. Graver des données depuis une appli VB.Net ou C#
    Par Chibitox dans le forum Général Dotnet
    Réponses: 2
    Dernier message: 27/11/2009, 14h41
  2. [D2007]Appel WebMethode .NET depuis appli win32
    Par SLE dans le forum Web & réseau
    Réponses: 0
    Dernier message: 27/06/2008, 16h08
  3. Réponses: 1
    Dernier message: 31/07/2007, 16h16
  4. Réponses: 5
    Dernier message: 02/02/2007, 11h29
  5. Sauvegarde / Restauration
    Par Sitting Bull dans le forum Administration
    Réponses: 2
    Dernier message: 13/06/2003, 13h46

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