2010-12-08 14 views
1

Comment puis-je vérifier dans mon programme si quelqu'un travaille sur un Microsoft DB d'accès? Il est seulement permis que 1 utilisateur travaille sur la base de données avec mon programme (C#), donc j'ai besoin d'un moyen de vérifier cela parce que l'accès n'est pas si bon pour plusieurs utilisateurs.Comment vérifier si quelqu'un est connecté à un DB d'accès

merci

+2

Ne pas Access créer un fichier de verrouillage (* .ldb), lorsque vous ouvrez le fichier de base de données? Vous pouvez vérifier si un * .ldb existe. – froeschli

+0

qu'est ce que je n'ai même pas – Will

Répondre

4
+0

Merci pour ce conseil, j'ai changé la connectiontring de mon programme pour ouvrir la base de données en mode exclusif mais il n'y a pas de changement. Si j'ouvre la base de données avec mon programme en mode exclusif, je peux toujours accéder même à partir de n'importe quel ordinateur sans erreur que la base de données est déjà ouverte. J'ai utilisé la chaîne de connexion suivante: Fournisseur = Microsoft.Jet.OLEDB.4.0; Source de données = # SERVERPATH #; Services OLE DB = -4; Mode = \ "Partage exclusif \"; Jet OLEDB: Mode de verrouillage de base de données = 1; Jet OLEDB: Mot de passe de base de données = passwort1; –

+0

Essayez d'utiliser la constante numérique, Mode = 12 – Tim

1

Ok:

  1. Il n'y a aucune raison pour laquelle l'accès ne sera pas très bien avec plusieurs utilisateurs - mais ses performances sur un réseau peut être pauvre et il existe de meilleures alternatives .
  2. Si son ouverture il y aura un fichier .ldb - mais ce n'est peut-être pas le meilleur moyen de vérifier car il devrait disparaître si la connexion est fermée et donc vous pouvez facilement les choses afin qu'il y ait des problèmes d'utilisateurs simultanés - En outre, comme suggéré dans les commentaires, ce n'est pas fiable (bien que si c'est là et que la DB est fermée, vous avez de plus gros problèmes).
  3. a la première @ Tim bonne solution en termes de regarder le mode exclusif
  4. je serais probablement suggère également de mettre votre propre fichier « verrouiller » en place plutôt que de compter sur les mécanismes d'accès
  5. Et si le seul Si vous voulez limiter les connexions au fichier, vous devez sérieusement vérifier si vous utilisez les bons outils.
+1

L'accès dans un scénario multi-utilisateur dépend de l'utilisation. Plusieurs lectures simultanées sont plus faisables que plusieurs insertions simultanées. Tous les enregistrements insérés sont ajoutés à "caboose" de la table, de sorte qu'il peut y avoir un conflit important pour cette page. En outre, comme dans toute architecture de verrouillage de byte-range à fichiers partagés (distincte du moteur client-serveur de bonne foi), si la connexion réseau est irrégulière ou si le PC client a des problèmes, les données sur le serveur peuvent être corrompu si les problèmes de couche de transport ou de client se produisent à un moment inopportun. Même un seul utilisateur a ces problèmes; Multi exacerbe. – Tim

+0

J'ai facilité les choses une fois. Je l'ai regretté;) –

+0

On ne devrait pas supposer que l'existence d'un fichier LDB (ou l'absence d'un fichier) vous dit quelque chose de définitif à savoir si quelqu'un a la base de données ouverte ou non. Cela signifie que la présence de quelqu'un ne signifie pas que quelqu'un utilise la base de données, car il peut être laissé dans le système de fichiers après que Jet/ACE ferme sa connexion (bien que ce n'est pas le comportement par défaut de Jet/ACE avec les permissions DELETE) . –