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 :

[Vb.net/sqlserver] restauration de base de donnee


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Décembre 2007
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 23
    Par défaut [Vb.net/sqlserver] restauration de base de donnee
    Bonjour,
    j écris un programme avec VB.net 2005 et une base de donnee sqlserver 2000. et dans l application j ai fait 2 bouton le 1ier pour le sauvegarde de la bd et le 2eme pour la restaurer beh pour le 1ier c est bien passé mais pour le 2eme il lève une exeption du genre "sqlexeption" le detail de l erreur et comme suit

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

    mon code source pour ce bouton et:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Me.SqlCmdRestauration.CommandText = "RESTORE DATABASE Mydb from DISK = 'C:\Documents and Settings\Administrateur\Bureau\db\azerty.bak'"
    Me.SqlCnMaster.Open()
    Me.SqlCmdRestauration.ExecuteNonQuery()
    Me.SqlCnMaster.Close()
    SqlCnMaste : un contrôle sqlconnection avec la base de donnee Mastre (bd systeme de sqlserver.
    SqlCmdRestauration : un contrôle sqlcommande.

    l exeption se leve au niveau de l instruction " Me.SqlCmdRestauration.ExecuteNonQuery() "


    a mon havie je crois qu il faut ajouter une instruction (peut etre une requête sql) au debut pour fermer toutes les connection avec la base de donnée mais cette instruction je ne ss pas comment la faire

    Merci de vos repenses.

  2. #2
    Membre éclairé Avatar de tigunn
    Homme Profil pro
    Développeur de bug
    Inscrit en
    Janvier 2003
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de bug

    Informations forums :
    Inscription : Janvier 2003
    Messages : 608
    Par défaut
    SAlut;
    regarde dans sql server management si tu n'est pas en train d'utiliser ta base.
    ------- dans IDE Visual Studio et l'explorateur de serveur si tu n'est pas connecter a ta bdd
    ------- dans ton code que tu ferme bien toutes les connexions avant de faire la restauration

    A priori pas besoin de rajouter une commande.

  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
    merci tigunn pour ta repense.
    bon le problème s était pas dans le code par ce que je ferme tous les connexion que j'ouvre mais plutôt dans sql server car j ai utilisé Analyseur de requêtes pour tester la requête.
    beh maintenant le nouveau problème c est si l utilisateur de mon application et très curiaux et il a ouvré la base de données dans l analyseur de requêtes comme j ai fait en suite il veut faire une restauration ça lève une exception pour un information c'est très simple je crois que la simple opération qu il doit faire c'est ouvrir l enterprise Manager après un bouton droit sure la base de données ensuite toutes les taches --> détacher la base de données une form s ouvre en mode ShowDialog dans "connexion utilisant cette base de données" on voit un nombre différent a zéro et le bouton effacer est activé on clique sur ce dernier après on ré-exécute notre application et voila le travaille


    MAIS
    cette méthode reste un peu compliqué donc s'il y a des proposition pour facilité cette tache et merci

  4. #4
    Membre confirmé
    Inscrit en
    Septembre 2003
    Messages
    91
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 91
    Par défaut
    Pour restaurer une base je passe par OSQL via un appel de processus.
    (Attention, au niveau du soft ttes les connexions à la BDD doivent être fermées)

    La commande OSQL pour la restauration de la base est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    OSQL -S monInstance -U user -P motDePasse -Q "RESTORE DATABASE nomBase FROM DISK='monCheminFichier.BAK' WITH REPLACE"

  5. #5
    Membre averti
    Inscrit en
    Décembre 2007
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 23
    Par défaut
    Merci tigrou2405 pour la 2eme méthode que je connais pas mais mon problème maintenant ce n'est pas comment restaurer une bd mais comment fermer toutes les connexions a cette bd avant de faire une restauration pour que ca ne plante pas et merci d'avance.

    j ai utilisé:tel que SqlCn est SqlConnection avec la bd et ça ne marche pas ( beh parce que il ferme que la connexion de mon application avec la bd mais n'est pas la bd avec un autre programme)

  6. #6
    Membre averti
    Inscrit en
    Décembre 2007
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 23
    Par défaut
    problème résolu il faut que j'exécute la requete suivante avant de faire la restauration :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER DATABASE basededonnees SET SINGLE_USER WITH ROLLBACK IMMEDIATE

    et merci a vous de vos réponses.

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

Discussions similaires

  1. VB .Net et copie de base de donnees
    Par vinczente dans le forum VB.NET
    Réponses: 7
    Dernier message: 17/04/2009, 10h33
  2. [VB.NET] Utiliser XML comme base de données dans VB
    Par jb084 dans le forum XML/XSL et SOAP
    Réponses: 4
    Dernier message: 17/11/2006, 18h56
  3. [ADO.Net] Utilisateur loggé choisit base de données
    Par evans dans le forum Accès aux données
    Réponses: 13
    Dernier message: 17/05/2006, 18h43
  4. [ADO.NET] Problème avec Insert dans base de données
    Par mpascolo dans le forum Accès aux données
    Réponses: 9
    Dernier message: 24/01/2005, 09h36
  5. [VB.NET] Une cellule particulière de la base de donnée
    Par Abalalojik dans le forum ASP.NET
    Réponses: 9
    Dernier message: 08/12/2004, 09h57

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