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 :

Utilisation d'une base de données sous forme de fichier en accès partagé


Sujet :

VB.NET

  1. #1
    Membre régulier
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Novembre 2006
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Novembre 2006
    Messages : 129
    Points : 106
    Points
    106
    Par défaut Utilisation d'une base de données sous forme de fichier en accès partagé
    Bonjour à tous et à toutes.

    Je vais devoir developper un logiciel sous VB express 2010 qui dois fonctionner sur plusieurs postes avec une connexion à une base de données. Le principal problème c'est que la base doit être sous forme de fichier sur un disque dur partagé entre tous les utilisateurs du réseau.

    Premièrement, est-ce possible ? Si oui de quelle manière interroger et surtout mettre à jour le fichier ?

    Merci d'avance

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 70
    Points : 53
    Points
    53
    Par défaut
    Bonjour, oui, c'est tout à fait possible

    Tu peux utiliser la sérialisation par exemple : de plusieurs sortes, XML, SOAP, binaire...

    Il y a vraiment beaucoup de personnes qui modifieront ce fichier? Car il faudra traiter les problèmes d'accès multiples sur un même fichier.

    edit: ce lien pourrait/devrait t'aider: http://tlevesque.developpez.com/dotn...serialization/

  3. #3
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    tu dis que tu as besoin d'une base fichier, mais sans préciser si tu en as déjà une et de quel type elle est
    ca voudrait dire que le programme n'est pas fait et la base non plus
    auquel cas il n'est pas trop tard pour faire ca avec une vraie base de données réseau type sql server express

    si tu veux vraiment un fichier access ferait l'affaire (mieux qu'un fichier xml ou autre)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  4. #4
    Membre régulier
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Novembre 2006
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Novembre 2006
    Messages : 129
    Points : 106
    Points
    106
    Par défaut
    Rien n'est créé. Je prefère avoir la méthode, savoir comment je vais m'y prendre pour dev que devoir modifier des choses improbables par la suite.

    L'idée de base c'est que plusieurs utilisateurs (moins d'une dizaine) vont intervenir sur cette base qui va servir a faire de la gestion, donc assez simple niveau traitement ca ce ne sera que de la saisie de données.

    Je ne sais pas quelles ressources mettre en place, et je me demandais si l'interface VB pouvait se connecter à un fichier type .sdf ou .mdf...

    Sachant qu'il faut un traitement rapide car la base s'agrandit assez rapidement (il y aura environ 2000 lignes au démarrage avec un ajout d'environ 300 à 500 lignes par an).

  5. #5
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    .sdf c'est sql server CE
    c'est une base fichier mais je ne crois pas qu'elle soit multi-utilisateur
    .mdf c'est sql server standard (ou express qui est gratuit)
    seul sql server peut lire ce fichier, et on y accèdes comme pour un sdf ou une base accesss via des requetes sur les tables (select, insert, update, delete)

    concernant les performances tu n'as pas de soucis à te faire, sql server peut largement gérer l'ajout de 500 lignes par dixième de seconde, alors par an ca devrait passer ^^

    je te conseillerais donc sql server express
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  6. #6
    Membre régulier
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Novembre 2006
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Novembre 2006
    Messages : 129
    Points : 106
    Points
    106
    Par défaut
    Est-ce que du coup tous les postes doivent avoir SQL Server Express ? Où juste le miens pour la conception de la Bdd ?

  7. #7
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    sql server doit être juste sur le serveur qui aura la base
    la structure des tables se fait avec le logiciel sql server management studio

    côté client (= les postes qui ont l'application) il n'y a rien à mettre, l'accès à sql server est inclus dans le framework .net

    la chaine de connexion doit contenir (entre autres) l'ip du pc ayant sql server
    plus d'infos sur comment exécuter des requetes sur sql server dans les tutoriels
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  8. #8
    Membre régulier
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Novembre 2006
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Novembre 2006
    Messages : 129
    Points : 106
    Points
    106
    Par défaut
    Justement, le problème est que je n'ai pas réellement de serveur, juste un espace de stockage partagé. D'ou l'utilisation d'un fichier.

    D'autre part, je viens de déployer un Exe en VB qui contient une base de données et il plante au moment de l'interrogation de la bdd. Il faut un composant supplémentaire autre que lke Framework 4 pour gérer ca ?

  9. #9
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    si tu as un espace de stockage et qu'il est sur un pc et que tu peux installer un logiciel sur ce pc pas de soucis pour sql server

    si tu n'as qu'un dossier partagé alors il faudra utiliser access (rien a installer non plus sur les machines)

    si tu as un programme qui plante tu peux avoir le détail de l'erreur pour la corriger
    il faut le chemin de la base de données pour y accéder et il était surement valable sur ta machine de développement mais pas pour ton nouveau déploiement ...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  10. #10
    Membre régulier
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Novembre 2006
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Novembre 2006
    Messages : 129
    Points : 106
    Points
    106
    Par défaut
    Du coup je pense que je vais passer par Access.

    Pour le déploiement, je n'ai pas transférer la base, pensant qu'elle était intégrer dans l'exe... je vais creuser ça.

  11. #11
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mars 2011
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Bonjour prologic,

    Je viens vers toi parce que j'ai lu ton post et je suis exactement dans le même cas que toi : Application C#, espace de stockage réseau etc..
    Je cherche une base de données multi-users qui permette à quelques personnes de saisir des données et d'autres qui consultent..

    Quelle base de données as-tu choisis ? Access ? SQL Server (Express) ?

    Tous les postes clients ont accès simultanément aux données et ça tourne bien ?

    Merci d'avance, votre aide me permettra de ne pas (re)faire certaines erreurs..


  12. #12
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    1 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 048
    Points : 2 201
    Points
    2 201
    Par défaut
    SQL Server Compact Edition fonctionne avec un espace réseau et une fichier sans domicile fixe (sdf).

    Néanmoins j'ignore si ça gère bien l'accès multi utilisateur simultanés (sachant que ADO.NET c'est du déconnecté je me demande dans quel mesure ça pose un problème.) et vu les performance d'accès dans ce domaine tu risques pas grand chose en testant.

    Par contre il y a un certains nombre de fonctionnalité qui ne sont pas disponible sur la version compact, il faut donc peut être étudier le cas pour ne pas se retrouver le bec dans l'eau.

    Sinon comme cité précédement, SQL Server Express fonctionne très bien sur un poste de travail standard qui reste allumer tout le temps (pour autant que le nombre d'utilisateur du système soit relativement limité).

    Il reste sinon toujours la version Azur de SQL Server qui peut être une solution (sachant que vous paierez à l'utilisation), on y gagne en frais de maintenance, d'infra et en mobilité (stratégie de backup plus facilement mise en place, pas besoin de mettre en place un serveur). Mais n'ayant pas d'expérience dans ce produit je vais m'arrêter ici...

  13. #13
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    sql server CE ne gère pas le multi user il me semble
    par contre je ne vois pas le rapport avec le mode déconnecté
    access par exemple peut gérer des verrouillage pendant les modifications empechant les bugs ou les donnnées fausses pour les autres users
    edit:msdn a l'air de dire que ca pourrait s'activer en fait, mais ils parlent de plusieurs applis d'un même poste, à tester donc si ca passe en réseau ...

    sql server express peut gérer beaucoup de users, néanmoins c'est un programme qu'il faut installer pour la gérer la base qui s'accède alors via tcp/ip (enfin c'est automatique au niveau du code)
    alors qu'access c'est un fichier

    azure c'est pas super pratique encore je trouve, et ca reste plus cher que de copier un fichier ^^
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  14. #14
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    1 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 048
    Points : 2 201
    Points
    2 201
    Par défaut
    Ben le rapport avec le mode déconnecté c'est que si SQL Compact verrouille le fichier lors de l'utilisation c'est pendant un temps "relativement" court contrairement à un bon vieux curseur qui bloquerait la table pendant une longue période.

    Pour SQL Express je ne doute pas que ce dernier puisse gérer plusieurs utilisateur mais je me demande à quel vitesse se dégrade les performances. Access (Jet 4.0 en tout cas) pouvait gérer 255 connexions en théorie mais vu qu'à 2 connexions il y avait déjà 50% de perte de performance... (Suffit d'avoir une application qui travaille sur la base pendant qu'une autre personne ait un recordset ouvert sur Access. On remarque la différence à l'oeil!) Mais je pense que pour une dizaine d'utilisateur, la version Express est largement suffisante (difficile de parler en terme d'utilisateur si on ignore la charge moyenne au niveau des requêtes....)

    Pour Azur j'énumère juste la possibilité. Après pour les pros et cons, je n'ai pas un recul ni d'expérience suffisante avec ce produit.

  15. #15
    Membre émérite Avatar de meziantou
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2010
    Messages
    1 223
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 223
    Points : 2 439
    Points
    2 439
    Par défaut
    Citation Envoyé par sinople Voir le message
    Access (Jet 4.0 en tout cas) pouvait gérer 255 connexions en théorie mais vu qu'à 2 connexions il y avait déjà 50% de perte de performance...
    Access n'a jamais été conçu pour gérer plusieurs utilisateurs (>10) en même temps (comme toutes les bases de type fichier) contrairement à SQL Server (et autres Oracle, DB2, ) qui est capable de gérer des centaines d'utilisateurs sans problèmes (voire plus).

  16. #16
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    je vais vous pondérer tous les 2
    access gère pas trop mal le multi utilisateur, et il a été concu pour sinon ca ne fonctionnerait pas ...
    j'ai même trouvé tout à l'heure qu'on pouvait définir le fonctionnement des verrouillages
    après ca ne peut pas tout faire certes, mais sur des petites bases de quelques dizaines ou centaines de Mo ou l'on fait peu d'insert/udpate/delete et avec 2 ou 3 users les dégradations devraient être minimes (quelques tables en ram ca peut etre utile)

    concernant sql express, ca dépend du pc mais il peut surement encaisser plusieurs milliers de requetes/seconde, même sur des bases de quelques Go, c'est à peu près le même moteur qu'sql server standard avec gestion d'un proc et d'1Go de ram seulement je crois

    bref s'il connait bien access et qu'il y a 3 users avec 50 requetes / jour je ne vois pas où est le soucis (et pourtant je déteste access)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  17. #17
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Access n'a jamais été conçu pour gérer plusieurs utilisateurs en même temps (comme toutes les bases de type fichier)
    Ms-Access a des fonctions de lock pour des accès multi-utilisateurs de type "pessimiste" et gère parfaitement les accès de type "optimiste".

    Edit: grillé sur le sujet par Pol63
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  18. #18
    Membre émérite Avatar de meziantou
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2010
    Messages
    1 223
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 223
    Points : 2 439
    Points
    2 439
    Par défaut
    Certes Access gère le multi-user (mais pas trop multi quand même).

    SQLpro propose un petit tableau pour aider à choisir entre base fichier et server (c'est en bas)
    http://sqlpro.developpez.com/cours/sgbdr/

  19. #19
    Membre régulier
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Novembre 2006
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Novembre 2006
    Messages : 129
    Points : 106
    Points
    106
    Par défaut
    Bonjour,

    Je viens de voir que je n'avais pas "Résolu" la discussion.

    J'ai donc utilisé une base Access avec plusieurs tables. La connection en multi-utilisateurs marche très bien, a un détail près... sur les 4 postes qui utilise le logiciel en même temps, celui qui utilise XP semble prioritaire sur l'accès à la base (en gros quel que soit l'ordre d'ouverture des logiciels sur les postes, c'est toujours le Xp qui montrera le moins de latence, les autres sont sous W7).

    Niveau programmation, on code comme si juste notre poste devait accéder à la base, il faut juster essayer d'interroger le moins souvent la base. J'utilisais un requête sur l'event Change d'un TextBox pour avoir un affichage dynamique. A éviter absolument, ça rame à fond quand la base est sur serveur.

  20. #20
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    1 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 048
    Points : 2 201
    Points
    2 201
    Par défaut
    Limiter les interrogations de la base de donnée c'est une règle générale. Ce n'est pas spécifique à Access. Vu que tu as de toutes façon un temps de latence entre l'envoi et la réception d'une requête, ça devient problématique si tu lies ceci à un évènements très fréquent.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. pb connection à une base de donnée sous windows 98
    Par philippe carel dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 07/01/2006, 14h24
  2. Réponses: 5
    Dernier message: 13/12/2005, 16h04
  3. Utilisation d'une base de données a distance
    Par newbie57 dans le forum Bases de données
    Réponses: 2
    Dernier message: 27/10/2005, 09h25
  4. [dbase3]Convertir une base de données sous windows
    Par nux dans le forum Autres SGBD
    Réponses: 2
    Dernier message: 04/10/2003, 14h25
  5. Une base de données sous windows ???
    Par nux dans le forum Décisions SGBD
    Réponses: 10
    Dernier message: 23/09/2003, 16h04

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