Ist MS Access (JET) für den Mehrbenutzerzugriff geeignet?
Ich habe ein Produkt entwickelt, um ein desktop-Produkt mit MS-Access-Datei als DB.
Nun, einige Benutzer zu installieren, müssen Sie es in ein paar PCs (sagen wir mal 2 oder 3) und TEILEN die Datenbank.
Dachte ich Stelle die MS-Access-Datei in einem freigegebenen Ordner zugreifen vom PC aus, aber... die JET-Engine ist ausgelegt für mehrere Benutzer-Zugang?
Irgendwelche Tipps oder Dinge bewusst zu sein, dies zu tun?
BEARBEITEN:
Die app ist ein .net, wobei die Datenbank als Speicher (nicht mit der Datenbank als frontend)
InformationsquelleAutor der Frage Romias | 2009-04-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es gibt so viel Fehlinformation in den Antworten in diesem thread, ich weiß nicht, wo zu beginnen. Ich habe gerade 4 Punkte in Ruf der Abstimmung unten die Antworten, die mit irreführenden und falschen Informationen in Ihnen.
die Jet-Datenbank-engine (das ist alle, die hier beteiligt sind, wie der OP geklärt mit einem Eingabefeld) ist standardmäßig multi-user-gebaut wurde es von Grund auf so sein.
teilen eines Jet-Daten zu speichern ist sehr zuverlässig, wenn das Netzwerk ist nicht minderwertig. Dies bedeutet nicht, eine WAN und nicht WLAN, weil die Bandbreite muss ausreichend für das Jet pflegen Sie die LDB-Datei (für multi-user-sperren), was bedeutet, dass ein ping von Ihrem lokalen PC ist Instanz von der Jet Datenbank-engine, der einmal pro Sekunde (mit default Einstellungen), und da Jet nicht mehr erholen kann, von einer gelöschten Verbindung (das ist durchaus üblich in einer WLAN-Umgebung).
die situation, wo der Zugang fällt ist, wenn ein front-end-Access-Anwendung (MDB geteilt wird (was nicht der Fall für das Plakat). Der Grund, warum es scheitert ist, weil Sie teilen Dinge, die können nicht zuverlässig freigegeben und haben keinen Grund, geteilt werden. Wegen der Art, wie Access-Objekte gespeichert sind in einer MDB-Datei (die gesamte Access-Projekt gespeichert ist, in einem einzigen BLOB-Feld in einem Eintrag in einer der system-Tabellen), ist es sehr anfällig für Korruption, wenn mehrere Benutzer öffnen. In meiner Einschätzung, die Freigabe einer Access-front-end (oder eines ungeteilten MDB mit den Tabellen und Formularen/berichten/etc. alles in eine MDB) ist die Quelle für 99,99% der Korruption der Access/Jet-Dateien.
Meine grundsätzliche Antwort auf die OP-Frage ist, dass, ja, der Jet wäre ein großer Daten-Speicher für eine app dieser Größe. Jedoch, wenn es überhaupt eine Möglichkeit für den Benutzer Bevölkerung wachsen über 25, dann könnte es besser sein, beginnen Sie von Grund auf mit einer Datenbank-engine, die ist robuster bei höheren Benutzerzahlen.
InformationsquelleAutor der Antwort David-W-Fenton
Es ist durchaus möglich, dies zu tun; aber Sie MÜSSEN teilen Sie die Datenbank in ein Frontend (Formulare, Abfragen, code) und ein Backend (nur Daten). Jeder Benutzer hat die front-end auf Ihrem eigenen computer, in Verbindung mit der gemeinsamen back-end.
Wird es langsam wie Jet erzeugt eine Tonne von Netzwerk-traffic. Microsoft wird auch nach und nach veralteten Access als Entwicklungsumgebung. Access 2007, zum Beispiel, hat ein weitaus weniger ausgeklügeltes Sicherheitsmodell als Access 2003.
Als eine lange Zeit zu Access developer ' ich bin die schrittweise Abkehr von Access.
InformationsquelleAutor der Antwort dsteele
Tun Sie es nicht... die Jet-Datenbank behauptet, in der Lage sein, Unterstützung für mehrere Benutzer, aber es ist unglaublich einfach zu benutzen der upsizing-Assistent konvertiert Ihre Access-Datei in eine Sql Express-Datenbank. Die Datenbank-Datei konnte LEICHT gesperrt werden, die von einem Benutzer oder admin, und alle Ihre Benutzer wäre nicht in der Lage, um die Datenbank verwenden.
... und Sql Express ist kostenlos. Ihre upgrade-Pfad von dort aus, um eine vollständige Instanz von Sql Server oder eine andere kommerzielle Datenbank ist einfach.
InformationsquelleAutor der Antwort Jeff Fritz
Mit 2 oder 3 user, die auf einen zuverlässigen lokalen Netzwerk, sollten Sie in Ordnung sein, solange Sie wieder das Netzwerk-Laufwerk bis oft.
Vermeiden bit/bool-Felder in den Tabellen - Jet hat einige böse Korruption Probleme mit mehreren den Zugang zu Ihnen.
Bedenken Sie auch, dass alle sperren in Access ist optimistisch: Sie wird schmutzig, liest gelegentlich.
MS Access eignet sich für kleine office-Szenarien wie diese: non-critical Licht im Büro verwenden, die Sie einrichten können, mit einem minimum an Programmierung.
Erwarten, dass die Daten-Datei beschädigt zu bekommen, jeden jetzt und dann - wieder regelmäßig.
InformationsquelleAutor der Antwort Keith
Den ACE/Jet-engine ist ein großes Stück software, aber, es war zwar entwickelt zur Unterstützung mehrerer Benutzer, die tatsächlich für die Unterstützung mehrerer Benutzer, in der Praxis ist nicht eine seiner stärken. Der Letzte Strohhalm für mich ist, wo dann entfernt user-level security (ULS) von der engine: ich glaube, ich kann mir vorstellen, eine einfache Datenbank-situation, wo alle Benutzer haben die gleichen Rechte (also admin-Zugriff auf alle Datenbank-Objekten), aber IMO nicht für die Unterstützung mehrerer Benutzer sowie, im Vergleich mit, sagen wir, MS-SQL-Server.
InformationsquelleAutor der Antwort onedaywhen
Ja, es unterstützt den Zugriff durch mehrere (das heißt, eine kleine, workgroup-Größe, Anzahl) der Benutzer über eine Netzwerkfreigabe. Jedoch, die Datei-Freigabe-Architektur ist einfach nicht ideal für die Unterstützung von gleichzeitigen schreiben in eine Datei durch mehrere Benutzer. Eine client/server-Datenbanksystem (SQL-Server, etc.) in der Regel bietet eine bessere Leistung, Sicherheit und Zuverlässigkeit.
InformationsquelleAutor der Antwort Jason Kresowaty
Als sysadmin, bitte benutzen Sie nicht den Zugang für alles-multi-user. Tun, was Jeff Fritz schlägt und verwenden eine Datenbank, die konzipiert ist für multi-user-Zugriff. Sie denken vielleicht, dass Ihre kleine app ist nur gemeinsam zwischen ein paar Menschen, aber ich garantiere Ihnen, es wird ein hundert-Benutzer und-fünfzig neue features bis Ende des Jahres. Und wenn das alle Zugreifen, anstatt VB/SQL Express, Ihre Ops die Leute brechen in Ihrem Haus eine Nacht und schlitzte Ihr die Kehle zu.
Zugang nicht eine client-server-Anwendung, und bietet sehr wenig in der Art von sichern/wiederherstellen, oder irgendeine Automatisierung zu löschen. Nicht zu vergessen, die Schnittstelle und die DB sind sehr eng gekoppelt... also, wenn Sie jemals wollen, um diese in eine web-app, oder machen irgendwelche gravierenden Veränderungen, die Ihre Welt mit Schmerz gefüllt.
InformationsquelleAutor der Antwort Don Werve
Es ist getan worden, so viele Male von so vielen generischen software-Ingenieure, wo wir gesehen haben, ein .mdb gehen korrupt in ein multi-user-situation. Wenn so viele erfahrene Spezialist für Access-Entwickler können es richtig machen, als ich bin geneigt zu glauben, dann sind wir Generalisten sein müssen, etwas falsch zu machen und muss etwas ziemlich grundlegende, aber nicht offensichtlich für so viele von uns, laufen Weg von der Sache, die Schreien " Nie wieder!' Also, wenn Sie sich selbst ein erfahrener Spezialist Access Entwickler (oder Sie wissen, wie zu finden), dann gehen Sie für es. Aber, wenn Sie sind ein generalist oder Gelegenheits-Nutzer auf der Suche nach einem leichten back-end dann schlage ich vor, Sie woanders suchen (SQL-Server ist gut IMO).
InformationsquelleAutor der Antwort onedaywhen
Wenn Ihre Benutzer können warten, doppelt so lange für eine Anwendung mit der Hälfte der Funktionen, die Sie wollen, dann verwenden Sie nicht den Zugang.
InformationsquelleAutor der Antwort JeffO
Jet nicht über die ausgeklügelte lock-Logik erforderlich, um Unterstützung für multi-user-Szenarien. Sie können Weg mit der Verwendung von es, wenn Ihre Anwendung ist meist liest und low-Streit.
Ich habe gesehen, websites unterstützt viele Benutzer, aber ich würde empfehlen SQL-Express, es sei denn, Sie haben einen zwingenden Grund zu wählen, Jet.
InformationsquelleAutor der Antwort Jim
Kann ich dir aus leidvoller Erfahrung, dass Jet 3/3.5 nicht zuverlässig. Ich sah es oft Abstürzen unter Last light und wenn es abstürzt, riskiert Datenverlust. Es verwendet zu werden, äußerst empfindlich auf irgendwelche Probleme mit der Stromversorgung, jede client-Absturz dagegen (sogar der UI-verbunden mit dem mdb), und in einem LAN-Probleme. Neuere Versionen von Jet könnte besser sein, aber der Wechsel zu Sql Server ist eindeutig der Weg zu gehen ist meiner Meinung nach für alles andere als trivial Dateneingabe mit einer kleinen Anzahl von Benutzern. Sql Express ist kostenlos und du nicht wirklich etwas verloren, besonders wenn Sie die Benutzeroberfläche ist in .Net, eher als der Zugang.
EDIT: Microsoft will nicht daran denken, sollten Sie sich auf Jet 4.
aus: http://support.microsoft.com/kb/303528
Microsoft Jet ist nicht vorgesehen für die Verwendung mit high-stress-server-Anwendungen, high-concurrency server-Anwendungen, die 24 Stunden am Tag, sieben Tage in der Woche server-Anwendungen. Dies umfasst server-Anwendungen, wie Web-Anwendungen commerce-Anwendungen, Transaktionsanwendungen und messaging-server-Anwendungen. Für diese Arten von Anwendungen die beste Lösung ist die Umstellung auf eine echte client - /server-basierte Datenbank-system, wie Microsoft Data Engine (MSDE) oder Microsoft SQL Server. Wenn Sie Microsoft Jet in starken Beanspruchungen ausgesetzten Anwendungen wie Microsoft Internet Information Server (IIS) verwenden, treten möglicherweise eines der folgenden Probleme:
Datenbank-Korruption
Fragen der Stabilität, wie der Absturz von IIS oder sperren
Plötzlicher Ausfall oder permanenter Ausfall der Treiber eine Verbindung zu einer gültigen Datenbank erfordert re-starten Sie den IIS-Dienst
InformationsquelleAutor der Antwort bglenn
nur prüfen, ob die db-Sperre-Datei (wie .ldb) vorhanden ist oder nicht. Wenn es da ist, jemand die Datei zugreifen. Wenn Sie es nicht ist, derzeit gibt es keinen Zugriff auf diese Datei, und Sie können fortfahren. Warten Sie andernfalls, wenn die Datei (.ldb) ist nicht mehr vorhandenen.
InformationsquelleAutor der Antwort Rohith Thangaraj
Wenn Sie einen Terminal-Server, die performance ist wirklich gut. Wir haben mehr Lösungen, bis zu 50 Benutzer an einer Access-mdb. Die Entwicklung ist wirklich schnell und die Bereitstellung einfach.
Probleme:
InformationsquelleAutor der Antwort Summer-Time