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

MS SQL Server Discussion :

[C#][SQL SERVER MANAGEMENT EXPRESS] Gestion des versions de BDD / Appli sous C#


Sujet :

MS SQL Server

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 122
    Par défaut [C#][SQL SERVER MANAGEMENT EXPRESS] Gestion des versions de BDD / Appli sous C#
    Bonjour,

    Je suis en train de terminer une appli. réalisée en winform sous C#, je suis sur le chapitre sauvegarde / restauration d'une BDD qui est sous SQL Serveur.

    Tout marche bien pour cette partie en termes de fonctionnalités basiques (cad sauvegarde/restauration). Je voudrais maintenant sécuriser encore plus les sauvegardes et restaurations en gérant les versions de BDD par rapport du logiciel qui utilise cette BDD. Le plus simple est de donner un exemple :

    1. Au début tout va bien, version 1 de l'appli et sauvegarde/restauration de la même version de BDD
    Appli version 1.0 <----> Sauvegarde / Restauration BDD version 1.0

    2. Puis on passe à une version 2.0. Le client oubli de faire ses sauvegardes dans la nouvelle version. Un jour tout plante, il installe la dernière version de l'application et essaye de restaurer une ancienne version de la BDD.

    Appli version 2.0 <----- Restauration version 1.0 possible avec exécution après d'un script qui ajoutera les nouveaux champs dans la BDD récupérée

    3. On a un autre client qui a eu aussi des soucis avec son pc. Il ne retrouve plus la version 2.0 de son appli et cherche à restaurer tout de même une version 2 de la BDD.

    Appli version 1.0 <----- Restauration version 2.0 impossible. Affichage d'un message d'erreur demandant au client de passer en version 2 pour pouvoir restaurer la BDD

    LA question : Tout ça pour dire que l'on doit gérer les versions de BDD et je voudrais savoir comment vous me conseiller de procéder ?

    Je suis parti sur le principe que je peux mettre une table dans la BDD et indiquer la version et que je devrais lire cette table pour savoir si je peux où non faire la restauration de ma BDD. Est-ce que je pars dans la bonne direction ?

    LA deuxième question (objet de ce message en fait) : Si je pars dans la bonne direction, ma question est la suivante : Comment lire le contenu d'une table à partir d'un fichier de type masauvegarde.bak ?

    Je suis ouvert à toute suggestion, et je remercie par avance ceux qui auront le courage de tout lire et surtout de me donner des conseils pertinents.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 122
    Par défaut
    J'ai peut-être une solution, pas géniale, mais qui pourrait fonctionner.

    Mais pour cela, il me manque une seule chose, je voudrais savoir comment lire la Description d'une sauvegarde en SMO ?

    Je sais enregistrer une description :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Backup bk = new Backup
    bk.Action = BackupActionType.Database
    bk.BackupSetDescription = "Ma description";
    bk.Database = "MaBase";
    ...
    bk.SqlBackup(srv)
    Ce qui m'interesse c'est de pouvoir relire ce que je mets dans BackupSetDescription lors d'un restore.

    Je n'ai pas trouvé de propriété correspondant à BackupSetDescription !

    Si quelqu'un à la moindre idée pour me permettre de lire cela quelque part cela pourrait m'aider considérablement en attendant une meilleure solution.

    Par avance merci !

  3. #3
    Membre chevronné Avatar de agemis31
    Profil pro
    DBA
    Inscrit en
    Octobre 2007
    Messages
    399
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : DBA

    Informations forums :
    Inscription : Octobre 2007
    Messages : 399
    Par défaut
    Bonsoir,

    Si j'ai bien compris, vous voulez éviter de restaurer une base de données incompatible avec l'application.

    Vous auriez pu, mais c'est moins joli, restaurer, et tester uniquement au lancement de l'application.

    Qu'est ce que ça donne en essayant avec Restore () ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Restore restoreInstance = new Restore();
    restoreInstance.Database = "MaBase";
    restoreInstance.Devices.AddDevice("C:\temp\MaBase.bak", DeviceType.File);
    A ce moment là, que contient restoreInstance.BackupSetDescription ?

    @+

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 122
    Par défaut
    Citation Envoyé par agemis31 Voir le message
    Si j'ai bien compris, vous voulez éviter de restaurer une base de données incompatible avec l'application.
    C'est exactement ça, vous avez bien compris.
    Citation Envoyé par agemis31 Voir le message
    A ce moment là, que contient restoreInstance.BackupSetDescription ?@+
    La description contient la version majeure et mineure de l'application (en sachant que je gère déjà tout ça sous forme de table et que je voulais mettre la dernière version enregistrée dans la table de paramètres dans cette description au moment du backup).

    Mon idée (la nuit étant passée dessus, je la trouve foireuse) était de pouvoir lire ce paramètre avant de charger la base.

    Comme je ne vois pas d'autre solution, je pense que je vais adopter la piste que vous m'avez donnée. Et là le fait d'enregistrer la version dans le descriptif devient inutile puisque j'ai accès aux tables.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 122
    Par défaut
    Citation Envoyé par agemis31 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Restore restoreInstance = new Restore();
    restoreInstance.Database = "MaBase";
    restoreInstance.Devices.AddDevice("C:\temp\MaBase.bak", DeviceType.File);
    Si on part sur ce principe, j'ai une autre question : comment restaurer la base avec un nom différent pour ne pas << écraser >> la base courante ?

    Il y a un tutoriel sur ce site qui explique très clairement les principes SMO sous SQL Server 2005, mais on ne parle pas de restauration avec un nom différent.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 122
    Par défaut
    Citation Envoyé par Potus Voir le message
    comment restaurer la base avec un nom différent pour ne pas << écraser >> la base courante ?
    En cherchant bien, j'ai trouvé un article qui correspond exactement à ce que je veux faire : SQL Server Management Objects (voir la figure 9).

    J'ai testé et mis en application dans mon exemple et cela fonctionne bien. Je restaure une BDD temporaire que je vais lire pour savoir si elle est compatible avec la version du produit en cours.

    Merci beaucoup agemis31 d'avoir participé au débat, cela m'a aidé dans ma réflexion !

  7. #7
    Membre chevronné Avatar de agemis31
    Profil pro
    DBA
    Inscrit en
    Octobre 2007
    Messages
    399
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : DBA

    Informations forums :
    Inscription : Octobre 2007
    Messages : 399
    Par défaut
    De rien,

    Bon amusement avec la suite :-)

    @+

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 18/06/2009, 11h22
  2. [SQL Server 2005 [Express]] récupérer des données
    Par le_ben dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 30/08/2007, 17h11
  3. Réponses: 4
    Dernier message: 01/06/2007, 10h37
  4. [SQL Server Management Express] Sauvegarde des données
    Par basnifo dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 02/06/2006, 09h49
  5. [SQL server 2005 express] liste des erreurs SQL serveur 2005
    Par critok dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 02/05/2006, 19h17

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