Frage

Ich habe ein Produkt entwickelt, um ein Desktop-Produkt mit MS Access-Datei als DB sein.

Nun, einige Nutzer es in ein paar PCs installieren müssen (sagen wir mal 2 oder 3) und teilen sich die Datenbank.

Ich dachte, die MS Access-Datei in einem freigegebenen Ordner platzieren und es vom PC zugreifen, aber ... die Jet-Engine ist für mehr Benutzer Zugriff konzipiert?

Irgendwelche Tipps oder Dinge bewusst zu sein, dies zu tun?

EDIT: Die App ist ein .net ein, um die Datenbank als Speicher (nicht die Datenbank als Frontend verwendet wird)

War es hilfreich?

Lösung

Es gibt so viele Fehlinformationen in den Antworten in diesem Thread, ich weiß nicht, wo ich anfangen soll. Ich habe gerade vier Punkte in dem Ruf nach unten stimmte die Antworten mit irreführenden und falschen Informationen in ihnen.

  1. der Jet-Datenbank-Engine (die alle sind, dass hier beteiligt ist, wie die OP mit einem Bearbeitungs geklärt) ist standardmäßig Multi-User -. Es aus dem Boden gestampft wurde bis auf diese Weise sein

  2. ein Jet-Datenspeicher teilen, ist sehr zuverlässig, wenn das Netzwerk nicht minderwertig ist. Das bedeutet keine WAN und nicht drahtlos, da die Bandbreite ausreichend sein muß, für Jet die LDB-Datei (für Multi-User-Verriegelung) zu halten, die einen Ping von Ihrem lokalen PC Instanz des Jet-Datenbank-Engine bedeutet einmal pro Sekunde (mit Standardeinstellungen), und da Jet nicht von einer unterbrochenen Verbindung wiederzuherzustellen (die in einer drahtlosen Umgebung durchaus üblich ist).

  3. die Situation, in dem Zugang nach unten fällt, wenn eine Front-End-Access-Anwendung MDB gemeinsam genutzt wird (was nicht der Fall für dieses Plakat ist). Der Grund ist es nicht, weil du Dinge teilst, die nicht zuverlässig freigegeben werden kann und haben keinen Grund, gemeinsam genutzt werden. Aufgrund der Art, Access-Objekte in einer MDB-Datei (das gesamte Access-Projekt in einem einzigen BLOB-Feld in einem Datensatz in einen der Systemtabellen gespeichert ist) gespeichert sind, ist es sehr anfällig für Korruption, wenn mehrere Benutzer öffnen. Nach meiner Einschätzung (mit den Tabellen und Formularen / Berichten / etc oder einen ungeteilt MDB. Alles in einem MDB) einen Access-Frontend teilen ist die Quelle für 99,99% der Verfälschungen von Access / Jet-Dateien.

Meine grundlegende Antwort auf die Frage des OP ist, dass, ja, Jet ein großer Datenspeicher für eine App dieser Größe sei. Allerdings, wenn es irgendeine Möglichkeit, überhaupt für die Bevölkerung Benutzer über 25 wachsen, dann könnte es besser sein, von Grunde auf mit einem Datenbank-Engine zu starten, die robusten bei höheren Benutzergruppen ist.

Andere Tipps

Es ist durchaus möglich, dies zu tun; aber Sie müssen die Datenbank in ein vorderes Ende geteilt (mit Formularen, Abfragen, Code) und ein hinteres Ende (nur Daten). Jeder Benutzer hat das vordere Ende auf dem eigenen Computer haben, die Anbindung an das gemeinsamen Back-End.

Es wird langsam sein als Jet eine Tonne Netzwerkverkehr erzeugt. Microsoft wird auch Zugang als Entwicklungswerkzeug allmählich ironischen. Access 2007, zum Beispiel, hat ein weit weniger anspruchsvolles Sicherheitsmodell als Access 2003.

Wie langer Zugang Entwickler ich nach und nach weg von Access-Bewegung bin.

Sie es nicht tun ... die Jet-Datenbank behauptet der Lage sein, mehrere Benutzer zu unterstützen, aber es ist unglaublich einfach den Upsizing-Assistenten verwenden, um Ihre Access-Datei in eine SQL Express-Datenbank zu konvertieren. Diese Datenbank-Datei stellt kein Problem für einen Benutzer oder Administrator gesperrt werden könnte, und alle Benutzer wäre nicht in der Lage, die Datenbank zu verwenden.

... und Sql Express ist kostenlos . Ihr Upgrade-Pfad von dort zu einer vollständigen Instanz von SQL Server oder einer anderen kommerziellen Datenbank ist einfach.

Mit 2 oder 3 Benutzer auf einem zuverlässigen lokalen Netzwerk sollten Sie sich gut, solange man das Netz oft fahren wieder nach oben.

Vermeiden Sie

alle Bit / Bool Felder in Tabellen -. Jet hat einige unangenehme Fragen der Korruption mit mehreren Zugang zu ihnen

Auch bedenken, dass in Access alle Sperren ist optimistisch. Sie verschmutzen gelegentlich liest

MS Access für kleine Büros Szenarien wie diese ausgelegt ist. Unkritisches Licht des Einsatz im Büro, die Sie mit einem Minimum an Programmierung einrichten können

Erwarten Sie die Datendatei hin beschädigt werden und dann -. Wieder nach oben regelmäßig

Der ACE / Jet-Motor ist ein großes Stück Software, aber, während es entwickelt mehrere Benutzer zu unterstützen, tatsächlich mehrere Benutzer in der Praxis unterstützt, ist nicht einer seiner Stärken. Der letzte Strohhalm für mich ist, wo dann entfernt Sicherheit auf Benutzerebene (ULS) aus dem Motor: Ich glaube, ich kann eine einfache Datenbank Situation vorstellen, in der alle Benutzer die gleichen Rechte (dh Admin-Zugriff auf alle Datenbank Objekte), aber IMO, die mehrere Benutzer auch nicht unterstützt wird, im Vergleich zu, sagen wir, MS SQL Server.

Ja, es unterstützt den Zugriff durch mehr (das heißt, eine kleine, Arbeitsgruppen-Größe, Anzahl) von Benutzern über eine Netzwerk-Dateifreigabe. Allerdings ist die Dateifreigabe Architektur einfach nicht ideal für die gleichzeitige Schreiben in eine Datei von mehreren Benutzern zu unterstützen. Ein Client / Server-Datenbanksystem (SQL Server, etc.) bietet im Allgemeinen eine bessere Leistung, Sicherheit und Zuverlässigkeit.

Als Sysadmin, benutzen Sie bitte nicht Zugang für etwas Multi-User. Tun Sie, was Jeff Fritz schlägt und eine Datenbank verwenden, die für Multi-User-Zugriff ausgelegt ist. Sie können denken, dass Ihre kleine Anwendung nur zwischen wenigen Menschen geteilt werden wird, aber ich garantieren Ihnen, dass es hundert Anwender und fünfzig neue Funktionen bis zum Ende des Jahres haben wird. Und wenn alle Access sind, anstatt VB / SQL Express, Ihr Ops Menschen in Ihrem Haus eine Nacht brechen und Schlitz Kehle.

Der Zugang ist keine Client-Server-Anwendung, und bietet sehr wenig in der Art von Backup / Restore, oder was auch immer jede Automatisierung. Nicht die Schnittstelle erwähnen und die DB sind sehr eng miteinander verbunden ... so, wenn Sie jemals in einen Web-App aktivieren mögen, oder gravierende Änderungen vornehmen, wird Ihre Welt mit Schmerz gefüllt werden.

Es ist schon so viele generische Software-Ingenieure so viele Male getan, wo wir eine .mdb geht korrupt in einer Multi-User-Situation gesehen haben. Wenn so viele erfahrene Spezialisten Access-Entwickler es richtig machen kann, wie ich geneigt zu glauben, bin, dann müssen wir Generalisten etwas falsch zu machen und dass etwas sein muss ziemlich fundamental sein noch nicht nahe liegend für so viele von uns von der Sache zu laufen weg schreien ‚nie wieder!‘ Also, wenn Sie sich bitte ein erfahrener Spezialist Zugang Entwickler sein (oder Sie wissen, wie man zu finden), dann geht für sie. Aber wenn Sie ein Generalist oder Gelegenheitsnutzer sind der Suche nach einem leichten hinteren Ende dann schlage ich Sie woanders suchen (SQL Server ist gut IMO).

Wenn die Benutzer doppelt so lange mit der Hälfte der Funktionen für eine Anwendung warten können sie wollen, dann nicht Access verwenden.

Jet nicht die ausgefeilte Verriegelungs-Logik erforderlich Multi-User-Szenarien zu unterstützen. Sie können mit der Verwendung von ihm weg erhalten, wenn Ihre Anwendung ist meist liest und Low-Contention.

Ich habe Unterstützung gesehen Websites viele Benutzer, aber ich würde SQL Express empfehlen, wenn Sie einen zwingenden Grund Jet zu wählen.

Ich kann Ihnen aus schmerzhafter Erfahrung sagen, dass Jet 3 / 3.5 war nicht zuverlässig. Ich sah es häufig unter geringer Last abstürzen und wenn es Abstürze waren riskiert man Daten Korruption. Früher war es extrem empfindlich auf alle Stromversorgungsprobleme, jedem Client Absturz gegen sie (auch die mit dem mdb verknüpft UI), und alle LAN-Probleme. Neuere Versionen von Jet könnten besser sein, aber auf SQL Server-Schalt ist eindeutig der Weg für etwas anderes als trivial Dateneingabe mit einer kleinen Anzahl von Benutzern meiner Meinung nach zu gehen. SQL Server Express ist kostenlos und Sie haben nicht wirklich etwas verlieren, vor allem, wenn Sie UI in .Net, anstatt Access.

EDIT:. Microsoft glaubt nicht, Sie auf Jet 4 entweder verlassen sollten

aus: http://support.microsoft.com/kb/303528

Microsoft Jet ist nicht für den Einsatz mit High-Stress-Server-Anwendungen, High-Concurrency-Server-Anwendungen, oder 24 Stunden am Tag bestimmt, an sieben Tagen in der Woche Server-Anwendungen. Dazu gehört Server-Anwendungen, wie zB Web-Anwendungen, Commerce-Anwendungen, Transaktionsanwendungen und Messaging-Server-Anwendungen. Für diese Art von Anwendungen ist die beste Lösung für ein echtes Client / Server-basiertes Datenbanksystem wie Microsoft Data Engine (MSDE) oder Microsoft SQL Server zu wechseln. Wenn Sie Microsoft Jet in hochbelasteten Anwendungen wie Microsoft Internet Information Server (IIS) verwenden, können Sie eine der folgenden Probleme auftreten: Datenbank Korruption Stabilitätsprobleme, wie IIS abstürzt oder Perren Plötzliches Versagen oder anhaltender Ausfall des Fahrers auf eine gültige Datenbank zu verbinden, die den IIS-Dienst erfordert Neustarten

nur prüfen, ob die db Sperrdatei (wie LDB) ist oder nicht. Wenn es da ist, greift jemand diese Datei. Wenn es nicht vorhanden ist, gibt es derzeit niemand diese Datei zugreifen, und Sie können fortfahren. Ansonsten warten, wenn die Datei (LDB) ist nicht mehr vorhanden ist.

Wenn Sie einen Terminalserver verwenden, ist die Leistung wirklich gut. Wir haben mehr Lösungen bis zu 50 Benutzer an einem Access-mdb. Die Entwicklung ist wirklich schnell und Bereitstellung einfach.

Probleme:

  • jeder kann Daten mdb kopieren
  • keine Zugriffsrechte
  • begrenzter Speicher Verfahren
  • optimize (komprimieren und Reparatur) nur möglich ohne Nutzungsdaten Datenbank
  • Grenze zu 2 GB!
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top