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 :

Copie d'une base de donnée en base de donnée locale


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de GavrocheNET
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2016
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mai 2016
    Messages : 54
    Par défaut Copie d'une base de donnée en base de donnée locale
    Bonjour à tous, je reviens vers vous en ce jour car je ne trouve pas de solution... en espérant que j'obtiendrais de l'aide ici !

    Alors voilà, je voudrais savoir s'il est possible de copier (sous VB NET) une base de donnée stockée sous SQL Server en une base de donnée locale... je m'explique:

    -Dans un formulaire, l'utilisateur choisi un projet (stocké dans une table SQL nommée par exemple PROJET_LISTE)...

    -Lorsque celui ci à choisi son projet, un autre formulaire s'ouvre avec des informations (stockées dans PROJET_INFO en SQL) concernant le projet en question et l'utilisateur à l'accès à un petit bouton nommé "Exporter en local"

    -Une fois le bouton cliqué, je cherche le code permettant d'effectuer une copie de la base PROJET_INFO (Trier en fonction du projet sélectionné préalablement), copie qui se sauvegarderait dans un répertoire local de l'utilisateur

    -Ainsi, l'utilisateur peut effectuer ses modifications sans avoir besoin de connexion (ce qui nécessite également le code permettant de lire une base de donnée en locale, donc changer le type de "connexion", je ne me suis pas encore penché là dessus, si ça trouve c'est facile, mais tant que je suis là j'en profite... je cherche d'abord à effectuer la copie...), donc tout se sauvegarde sur la base de donnée locale, il peut faire ses modifications normalement de la même façon que lorsqu'il est connecté...

    -Enfin, lorsqu'il est connecté au serveur, il aura accès à un bouton "Import" lui permettant de sélectionner cette base locale et ainsi effectuer automatiquement les modifications sur la base de données serveur, toujours en fonction du projet sélectionné... ce qui permettra aux autres utilisateurs d'avoir accès aux mises à jours effectuées par l'utilisateur ayant importé et à leur tour pouvoir prendre la base mise à jour etc etc...

    Je pense avoir été assez clair... si vous avez des questions n'hésitez pas, je cherche tout d'abord à effectuer la copie, mais si vous avez également des exemples d'utilisation, je suis preneur.

    Je vous remercie !

    EDIT: Je précise que j'aimerais éviter au maximum d'installer des modules tels que SQLite ou autre...

  2. #2
    Membre Expert Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Par défaut
    Hello,

    Donc tu veux faire une copie d'une table (ou d'une base entière? constituée de plusieurs tables) localement...

    Mais dans des fichiers plats ? (xml, csv...) ou tu veux un vrai SGBD local ? (qui parait compliqué...)

    Les projets en BDD, ont ils tous la même forme (même colonnes, même tables etc ) ?

  3. #3
    Membre confirmé Avatar de GavrocheNET
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2016
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mai 2016
    Messages : 54
    Par défaut
    Bonjour, merci pour votre réponse !

    A vrai dire... le projet à quelque peu changer... il s'agit maintenant de créer directement un fichier mdf sur le réseau local de l'utilisateur:

    -Clic sur le bouton, création d'une base mdf sur le réseau local de l'utilisateur

    -Par requete, récupération des données de la base principale pour alimenter la nouvelle base locale crée

    -Ensuite l'utilisateur agit sur sa base locale

    -Au moment du réimport, les tables sont comparées et les modifications sont appliquées sur la table principale

    -Suppression de la base locale

    En gros ce serait plus une table provisoire pour stocker les données avant et permettre les modifications en local.

    Pour répondre à vos question:

    Bah du coup on ne parle plus de copie de table... mais de création d'un fichier mdf par le code, alimenté ensuite par requete.

  4. #4
    Membre Expert Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Par défaut
    Alors....

    1) D'où vous viens l'idée, qu'on peut copier un fichier MDF, et l'ouvrir comme si c'était un SGBD complet sur lequel on peut faire des requêtes ?
    2) Donc a fortiori... comparer deux fichiers MDF, c'est encore plus rock'n'roll

    Quel est le besoin de tout ceci ?

  5. #5
    Membre confirmé Avatar de GavrocheNET
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2016
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mai 2016
    Messages : 54
    Par défaut
    Je sais que c'est un peu fouillis et j'ai du mal à comprendre l'ambition derrière... je suis en stage et je dois développer cette solution qui me parait risquer (dur de faire entendre le message quand on est stagiaire...)

    En fait, le principe est de pouvoir utiliser une fonctionnalité de notre logiciel (fonctionnalité de chiffrage assez complexe et alimentée par une base réseau) en local.

    Pour résumer voici l'idée de mon tuteur:

    -La base réseau serait la base principale (enfin pas la base entière, le programme aura besoin de 4 tables de cette base réseau pour fonctionner)

    -Lorsque l'utilisateur cliquera sur export, soit une base de donnée locale sera créée puis alimentée à partir de la base réseau soit la base réseau sera directement copiée en base locale (même si cette solution ci me semble, comme vous l'avez précisé, très risquée)... le but est de pouvoir faire fonctionner le logiciel en local.

    -Ensuite lorsque l'utilisateur ayant exporter la base en locale réimportera ses données, la base réseau sera remis à jour en fonction des données de la base locale donc soit en supprimant la base réseau (les 4 tables concernées...) et elle serait remplacée par la base locale qui deviendrait la base locale... soit elle serait mise à jour en fonction des nouvelles données (comparaison entre les deux bases...)

    Je sais que ça à l'air d'être le bordel et j'espère être clair... j'ai beaucoup de mal à imaginer la finalité car pour moi aussi ça me parait n'être en aucun des deux cas la bonne solution...

  6. #6
    Membre Expert Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Par défaut
    Bon,

    Mais pourquoi ? entre l'import et l'export, il peut se passer plusieurs jours ?

    Ou c'est instantané ? car dans ce cas, pourquoi ne pas faire une requête, récupérer les données en mémoire, traiter les données, et mettre à jour.

    Si le but par contre, c'est de travaillé x temps en locale... Alors il faut stocker les données en locale... Mais pour faire ça, tu ne peux pas copier les fichier de SQL Server.
    D'ailleurs, se serait compliqué de faire un serveur de base de données en locale... Juste pour un traitement..
    La solution, serait de mettre ces infos, par exemple dans des fichiers XML.

    Tu charges les tables, tu écris les données dans des fichiers XML en locale... Tu travailles dessus 10 jours..
    Puis 10 jours plus tard, tu compares le XML avec la base de données, et tu mets ç jour ce qu'il faut.

    Après le désavantage, c'est qu'avec du XML, les données ne sont pas sécurisés... pas de mot de passe.

    Si tu veux vraiment, mettre ça dans un SGBD en locale... Alors il faut nstaller Microsoft SQL Server sur ton pc... Mais bon, rien que pour ça... Et c'est encore une licence à payer.

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

Discussions similaires

  1. Réplication données depuis Base SQL Server vers Base MYSQL
    Par elspliffo dans le forum Réplications
    Réponses: 2
    Dernier message: 27/09/2007, 14h02
  2. Réplication données depuis Base SQL Server vers Base MYSQL
    Par elspliffo dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 27/09/2007, 14h02
  3. Réponses: 1
    Dernier message: 17/10/2006, 17h37
  4. Copie d'une base de données (Sécuritée)
    Par Mawashigeri dans le forum Outils
    Réponses: 3
    Dernier message: 27/02/2006, 20h03
  5. Réponses: 5
    Dernier message: 08/07/2005, 13h10

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