Frage

Für ein kleines Projekt, das ich brauche eine einfache Datenbank zu verwenden, mit sehr leichten Anforderungen: einige Tische, nicht mehr als ein paar tausend Datensätze insgesamt, 2 oder 3 Benutzer. Ich arbeite in .NET-Umgebung.

Als Datenbankserver (auch diese Express-Editionen) wie eine riesige Overkill in diesem Fall scheint eine sehr einfache MDB-Datenbank für die meisten Anforderungen tun könnte. Ich bin jedoch besorgt über Gleichzeitigkeit. Meine Idee ist es, die MDB-Datei auf einer Netzwerkfreigabe zu platzieren und damit Benutzer Zugriff auf diese Datei von ihren .NET-basierten Clients. Der db wird meist bei Nur-Lese-Operationen gerichtet, sondern Benutzer werden gelegentlich auch aktualisieren / Löschen von Datensätzen müssen. Wenn dies zum Zeitpunkt nicht möglich sein wird (aufgrund der db wird gesperrt oder was auch immer), kann ich das Updates auf dem Client halten und sie zu einem späteren Zeitpunkt bearbeitet werden.

Die Frage selbst geht entlang dieser Punkte:

  • Wie sind gleichzeitig liest in MDB behandelt?
  • Wie werden die gleichzeitige Aktualisierungen / Löschungen in MDB behandelt?
  • Gibt es ein Konzept von Schlössern und wie kann ich es in einer .NET-Anwendung nutzen?
  • Ist Platzieren der MDB-Datei auf einer Netzwerkfreigabe gut oder schreckliche Idee?

Wie ich in .NET arbeitete, würde ich auch gerne wissen, wie kann ich keine Parallelität Probleme erkennen und entsprechende Maßnahmen zu ergreifen. Das heißt, die Ausnahme sollte ich fangen und welche Maßnahmen würden Sie zu ergreifen empfehlen?

Bearbeiten : Es kann meine schlechte Beschreibung des Problems sein, aber die meisten Antworten scheinen gehen für einen ausgewachsenen DB-Server zu beraten. Ich mache die Unterschiede und Vorteile verstehen, um eine Server-Installation zu haben und in der Tat haben eine ganze Reihe von Projekten auf MSSQL und Oracle implementiert. In dieser Frage nicht aber ich bin nur mit Access und seine Parallelitätsprobleme, so wenden Sie sich bitte einen DB-Server vor.

Danke für Ihre Hilfe.

War es hilfreich?

Lösung

Dies ist eine alte Frage, aber niemand hat es jemals tatsächlich beantwortet. Hier sind die Fragen:

  1. Wie sind gleichzeitig liest in MDB behandelt?
  2. Wie werden die gleichzeitige Aktualisierungen / Löschungen in MDB behandelt?
  3. Gibt es ein Konzept von Schlössern und wie kann ich es in einer .NET-Anwendung nutzen?
  4. Ist Platzieren der MDB-Datei auf einer Netzwerkfreigabe gut oder schreckliche Idee?

Die ersten beiden Fragen lassen sich grundsätzlich mit einer Erklärung beantwortet werden. Ein wichtiger Nachteil hier: die Antworten Ich gebe hier sind spezifisch für Jet MEB (und ihre Varianten) und nicht vollständig gelten für das neue Dateiformat eingeführt, beginnend mit A2007, das heißt, ACCDB-Format. Ich habe nicht in vollem Umfang die Auswirkungen der Entfernung von Jet ULS aus dem ACE erkundet und einige der Kommentare unten kann Jet ULS unter der Haube übernehmen. Für viele Dinge, obwohl, können Sie „LACCDB Datei“ für „LDB-Datei“ ersetzen und die Ergebnisse werden die gleichen sein.

1-2) Concurrent liest / Aktuelles / Löschungen

Der Jet-Datenbank-Engine wird oft als eine „Dateiserver“ Datenbank, dass es keine serverseitige Dämon I / O mit den Datendateien auf dem Server zu verwalten. Das bedeutet, dass alle Clients einen Jet MDB mit direkt die Datei lesen.

Das ist, natürlich, ein Rezept für eine Katastrophe, wenn es nicht ein Mechanismus für den Umgang mit dem gleichzeitigen Zugriff auf die Datei eingebaut ist.

Jet verwendet eine Rekord-Sperrdatei, wo, wenn Ihr MDB ist „MyFile.MDB“ die Record-Locking-Datei wird im selben Ordner sein und „MyFile.LDB“ genannt. Die LDB-Datei zeichnet auf, was Jet ULS Benutzer die MDB-Datei geöffnet haben, welche Workstation, die Benutzer aus verbunden ist, und die alle notwendigen Informationen für die Aushandlung von Concurrency Probleme.

Nun zu denen, die ihre Zähne auf Client / Server-Datenbank-Engines schneiden, kann diese primitive und gefährlich erscheinen, aber die Jet-Datenbank-Engine ihren Zweck entwickelt wurde, war zu der Zeit, als Desktop-Datenbank-Engine für kleine Arbeitsgruppen verwendet werden und es wurde mit anderen Desktop-db-Motoren wie xBase und Paradox, von denen beide analogen Sperrdateien verwalten gleichzeitige Verwendung von Datendateien von mehreren Clients konkurrieren.

Innerhalb einer Jet-Datenbank-Datei, werden Sperren angewandt entweder auf Datenseite (die in Jet 4 bis 4K erhöht wurden, während in Jet 3.x und zuvor waren sie 2K) oder auf dem Rekordniveau, wenn die Datentabelle war ursprünglich erstellte satz~~POS=TRUNC Verriegelung zu verwenden. In den frühen Tagen der Jet 4 wurde auf Datensatzebene Verriegelung durch viele gefunden ziemlich langsam zu sein, vor allem, wenn pessimistische Sperren verwenden, so viele Access-Entwickler nie etwas anderes als Sperren auf Seitenebene verwendet (@ David Fenton hebt Hand an!).

In der Tat, wenn die optimistische Sperren verwenden, können Sie die meisten der Concurrency Probleme vermeiden, die mit pessimistischen Sperren kommen würden.

Einige Einschränkungen:

  1. von DAO, Rekord-Level Locking steht nicht zur Verfügung, und Sie immer nur Sperren auf Seitenebene bekommen.

  2. von DAO, gibt es eine Reihe von Möglichkeiten zur Steuerung optimistisch / pessimistisch sichernd, insbesondere das LockEdits Argument der OpenRecordset-Methode, aber das wirkt auch mit bestimmten von der Einstellung im Option Argumente OpenRecordset angegeben (zB Option dbReadOnly kann nicht mit LockEdits verwendet werden). Zusätzlich zu sperren, gibt es auch Möglichkeiten für eine konsistentes / inkonsistentes Updates und all dies mit Transaktionen in Wechselwirkung treten kann (zB Änderungen innerhalb einer uncomitted Transaktion sind für andere Benutzer nicht sichtbar sein werden und somit nicht mit ihnen in Konflikt geraten, aber es setzen schreibgeschützt können Schlösser an den beteiligten Tabellen).

Von ADO / OLEDB, diese Jet Nebenläufigkeitssteuerung Strukturen werden auf die entsprechenden Funktionen und Argumente in ADO / OLEDB gefunden abgebildet werden. Da ich Jet verwende nur aus Access, interagieren ich mit ihm nur über DAO, so kann ich nicht raten, wie Sie diese Kontrolle mit ADO / OLEDB, aber der Punkt ist, dass der Jet-Datenbank-Engine der Kontrolle über Ihre Datensatzsperren bietet, wenn es den Zugriff auf programmatisch (als opposed die Access-Benutzeroberfläche durch.) - es ist nur komplizierter

3) Schlösser und .NET

Ich kann keine Beratung bieten hier, außer, dass Sie wahrscheinlich OLEDB als Datenschnittstelle verwenden würde, aber der Punkt ist, dass die Verriegelungs Funktionalität / Steuerung ist es in der DB-Engine selbst, so gibt es wahrscheinlich eine Möglichkeit, steuern sie über OLEDB. Es kann nicht schön sein, wenn es, wie es mir scheint, dass OLEDB um Client / Server-Architekturen konzipiert ist, und Jet dateibasierte Verriegelung auf, dass in einer eleganten Art und Weise nicht abbilden kann.

4) MDB auf einer Netzwerkfreigabe

Jet ist sehr empfindlich auf die geringste Schluckauf in jede Netzwerkverbindung. Aus diesem Grunde kann Netzwerken mit geringer Bandbreite die Verwundbarkeit von Jet-Datenbanken über eine langsame Verbindung offen erhöhen.

Das ist, weil so große Brocken der Datenbankdatei über den Draht auf den lokalen Computer des RAM zur Verarbeitung gezogen werden müssen. Nun behaupten viele Menschen fälschlicherweise, dass die gesamte MDB-Datei über den Draht gezogen wird, oder dass ganze Tabellen über den Draht gezogen. Das ist nicht wahr. Stattdessen fordert Jet zuerst die Indizes (und Anfragen nicht mehr als notwendig, um die Abfrage zu erfüllen) und dann von diesem Ergebnis bestimmt genau, welche Datenseiten benötigt werden, und dann zieht nur die Seiten. Dies ist überraschend effizient und schnell.

Auch dann, wenn Jet einige sehr intelligentes Caching, die, dass eine erste Datenanforderung kann eine Weile dauern kann bedeuten, aber nachfolgende Anforderungen für die gleichen Daten geschieht fast augenblicklich wegen Caching.

Nun, wenn Sie Ihre Tabellen nicht gut indiziert haben, können Sie die gesamte Tabelle und macht einen vollständigen Tabellenscan am Ende ziehen. wenn Sie die Basiskriterien für die clientseitige Funktionen Ebenso die nicht Teil des Jet SQL-Dialekt sind, können Sie eine vollständige Tabelle am Ende ziehen (Sortierung auf, sagen wir, Ersetzen (MyField, „A“, „Z“) ist wahrscheinlich Ursache ein Full Table Scan). Aber diese Art von Dinge wird mit einem Client / Server-Architektur ineffizient sein, auch, so ist es nur die gesunde Menschenverstand Schema-Design zu indizieren Dinge richtig und vorsichtig sein, mit UDF oder nicht-Jet-kompatible Funktionen. Im Allgemeinen ist die gleichen Dinge, die mit Client / Server effizient gehen mit Jet effizient sein (der größte Unterschied ist, dass mit Jet sind Sie besser dran mit einer persistenten Verbindung, um den Aufwand für die Neuerstellung der LDB-Datei zu vermeiden, die ist signifikant).

Die andere Sache zu vermeiden versucht, Jet Daten über eine WiFi-Verbindung zu verwenden. Wir alle wissen, wie unzuverlässig WiFi ist, und es ist nur Ärger bringen versucht, mit Jet-Daten über eine WiFi-Verbindung zu arbeiten.

In der unteren Zeile:

Wenn Sie eine MDB als Datenspeicher verwenden Daten von einem Webserver zu dienen, sollten Sie die Daten so nah an den Arbeitsspeicher des Webservers wie möglich setzen. Das bedeutet, dass, wenn möglich, auf einem Datenträger, der den physischen Web-Servers verbunden ist. Wo das nicht möglich ist, möchten Sie eine schnelle, zuverlässige LAN-Verbindung. GB LANs in Daten-Zentren in diesen Tagen ziemlich häufig und ich würde sehr komfortabel mit Jet-Daten arbeitet über diese Art von Verbindung.

Zur Mitbenutzung, zum Beispiel mehrere Client-Workstations mit einem VB.NET-Desktop-App einen einzelnen Jet MDB als Datenspeicher teilt, ist es ziemlich sicher, die Datendatei auf einem zuverlässigen Dateiserver haben. Wo es möglich ist, es ist eine gute Idee, um Ihre Jet MDB-Dateien auf Computern zu setzen, die nicht mehrere Zwecke dienen (zB Ihre Domänencontroller, Exchange, SQL Server und als Dateiserver und Druckserver ausgeführt wird möglicherweise nicht die beste Lage sein) . Apps wie Exchange kann mit Datei-Server-Funktionalität schlecht stören, und ich in der Regel empfehlen würde nie MDB-Dateien auf einem Server setzen, die Multi-Tasking als Exchange-Server ist, wenn es extrem niedriges Volumen ist.

Weitere Überlegungen:

  1. niemals versuchen, eine MDB auf einem replizierten Dateisystem zu verteilen, es sei denn, alle Benutzer die gleiche Replik verwenden. Das heißt, wenn Sie zwei Servern zu replizieren Dateien zwischen ihnen, denken Sie nicht einmal über das Bearbeiten the MDB-Datei von beiden Servern. Dies wird die Datei beschädigt fast sofort.

  2. I gegen die Speicherung eines beliebige MDB auf etwas anderes als ein native Windows-Dateisystem bedient über native Microsoft SMB-Netzwerke empfehlen würde. Dies bedeutet, dass kein Novell, keine Linux, keinen SAMBA. Der Hauptgrund dafür ist, dass es scheinbar Low-Level-Haken von Jet in eine Low-Level-Locking-Funktionalität in Windows-Dateisystem ist, die nicht zu 100% auf anderer Datei systsm repliziert werden. Nun, ich bin sehr konservativ auf diese und viele kompetente Access-Entwickler haben hervorragende Ergebnisse berichtet mit richtig konfigurierten Novell File-Server (oft dort müssen einige Satzsperren Anpassungen sein, obwohl das möglicherweise weniger relevant in diesen Tagen - ich don ‚t wissen, auch wenn Novell mehr existiert!) und eine herausragende Performance mit Linux-basierten Dateiserver, auf denen SAMBA. Ich bin auf diese vorsichtig und würde jeden Client davon abraten (diese verschiedenen SAN-Geräte umfasst, als auch, da nicht viele von ihnen sind Windows-basiert).

  3. Ich würde nie auf jedem virtualisierten Dateisystem aus den gleichen Gründen laufen. Allerdings, ich habe einen Kunden, der seit einigen Jahren wurde ohne ein einziges Problem ihren Single-User-Access-App unter Parallels auf einem Mac Air läuft. Aber es ist Single-User, so dass die Probleme mit Sperren gehen relativ gering sein.

Ich weiß nicht, ob das Ihre Fragen beantwortet oder nicht. Es ist alles basierend auf meinen 13 Jahren regelmäßiger Anwendung von Jet als Access-Entwickler und das Studium der einzigen veröffentlichten Buch über Jet, der Jet Database Engine Programmers Guide (für Jet 3.5 nur). Ich habe keine wirklichen Zitate zur Verfügung gestellt, aber wenn jemand einige Details über irgendetwas muss ich gesagt habe, ich werde die Forschung tun, wenn ich kann.

Andere Tipps

Ich habe ein Dutzend oder so kleine Business-Anwendungen in Access über die Jahre aufgebaut. Die meisten haben ein Maximum von 10-20 Benutzer auf sie zu einem Zeitpunkt. Die Datenbanken werden zwischen einer „app“ und „Daten“ Datenbank aufgeteilt. Die Leistung ist in Ordnung und keine Probleme mit concurrancy. Auch Korruption ist seit Access 2000 SP2 im Grunde nicht existent gewesen.

Es gibt eine Menge Leute sagen, „nicht immer zu Access verwenden“ - auch wenn es richtig gemacht wird (dh von einem professionellen Entwickler) Access ist ein recht feines Entwicklungspaket, und ich habe ein gutes Leben an ihn gemacht. Meine Kunden sind sehr zufrieden mit dem, was ich gebaut.

Ich habe zwei kommerzielle Produkte geschrieben, die eine Access-Datenbank verwenden, von einer Netzwerkfreigabe ausgeführt wird, für gewöhnlich bis zu 10 Benutzer. Wenn Sie es nicht missbrauchen, gibt es wirklich kein Problem; aber wie können Sie viele Entwickler sehen nicht immer dort - und wegen seiner niedrigen Ende der Natur gibt es viele crappy Hacks darauf gebaut. Im Falle eines Produkts, hatte ich die App neu zu gestalten, weil alle beschriebenen Probleme im Detail von anderen; aber nachdem ich es aufgeräumt, ich hatte nie eine Datenbank Integritätsproblem über Hunderte von Installationen.

Sein ein großer Vorteil ist die einzige Datei-Datenbank, die zu sichern ist einfach, Wiederherstellen und kopiert, um Ihren Laptop zu sezieren. So ziemlich alle Alternativen, einschließlich SQLite (obwohl einige werden es nicht zugeben), erfordern eine gewisse Form von DBA Aufmerksamkeit von Zeit zu Zeit.

In den meisten Fällen Access bieten Datensatzsperren und Dateisperren für einige DDL (z Schemaänderungen) standardmäßig aktiviert.

Aber Microsoft ist im Grunde obsoleting es, und einige Ihrer Kollegen werden für die Verwendung es Hohn auf euch häufen.

(An dieser Stelle ich normalerweise Ente für Abdeckung und schreie "INCOMING !!!").

Der Zugang ist wirklich ein Desktop, Single-User-Lösung. In der Praxis hat es eine obere Grenze Benutzer von „eins“.

Es ist auch ein lokaler Motor. Das heißt, wenn Sie eine Abfrage ausführen, werden die Daten über das Netzwerk an den lokalen Jetmodul zur Verarbeitung gezogen. Eine LDB-Datei auf der Netzwerkfreigabe Steuersperren gesetzt wird.

Wenn Sie eine serverseitige Engine verwenden (MSSQL, MySQL, Sybase, ‚Orable etc), dann reichen Sie eine Anfrage an einen Motor, der es und gibt die Ergebnisse an Sie verarbeitet. Sperren werden intern gehalten wird.

Dies hat enorme Auswirkungen auf die Leistung, Stabilität und Datenintegrität.

Wenn Ihre Benutzer die Reset-Taste zu drücken, entscheidet der Zugang databse hat eine faire Chance beschädigt werden und Sie werden die LDB löschen.

Mit einem geeigneten Datenbank-Engine (MSSQL, Sybase ‚Orable: Ich weiß nicht, wie die MySQL-Backups) dann auch eine richtige Backup-Funktion. Es sei denn, Sie einige whizzy Software zur Unterstützung inuse Dateien haben, ist es möglich, dass Sie keine Backups Ihrer Daten in der Access-DB haben werden.

habe ich erwähnt, Schlösser speziell, weil ein db Motor Gleichzeitigkeit und Transaktion weit verarbeiten kann effiziente und elegant als jedes dateibasierten System.

kann ich ein Access-Projekt als Frontend für einen Datenbank-Engine sehen verwenden, aber nicht in einer vollständigen Client-Anwendung mit einem Access-Backend zu investieren.

Ich habe Zugang wurde, oder richtiger, Jet als Back-End auf eine sehr kleine, privaten Website, die nie wachsen kann, wie es durch die Größe eines Berufes in diesem kleinen Land beschränkt ist. In drei Jahren habe habe ich keine Probleme. Es gibt weniger als 100 Benutzer, mit etwa dreißig bis vierzig es jeden Tag verwenden. Die Tische haben ein paar tausend Datensätze.

Ich habe nicht viel Erfahrung mit Zugang, aber diesen Link können Sie nützlich sein:

http://office.microsoft.com/en-us/access /HP052408601033.aspx

"Sie können die gesamte Access-Datenbank auf einem Netzwerk-Server setzen oder in einem freigegebenen Ordner. Dies ist die einfachste Methode zu implementieren. Jeder teilt die Daten und verwendet die gleichen Formulare, Berichte, Abfragen, Makros und Module. Verwenden Sie diese Strategie, wenn Sie alle die Access-Datenbank auf die gleiche Weise oder wenn Sie nicht unterstützen können Benutzer erstellen ihre eigenen Objekte. "

verwenden möchten

"Wenn Sie eine Access-Datenbankdatei (.mdb) in Shared-Modus, Microsoft Access erstellt außerdem eine Sperrinformationsdatei (LDB) mit dem gleichen Dateinamen (zum Beispiel Nordwind.ldb) und im selben Ordner wie die Datenbankdatei. Diese Sperren Informationsdatei speichert die Computernamen (wie mypc) und Sicherheitsnamen (zB Admin) jeden gemeinsamen Benutzers der Datenbank. Microsoft Access verwenden diese Informationen, um die Parallelität zu steuern. In den meisten Fällen, Microsoft Access automatisch löscht die Sperrinformationsdatei, wenn der letzte Benutzer die Datenbank-Datei geschlossen wird. "

Der Zugang soll Multi-User sein - ich denke, Microsoft es für bis zu 4 oder 5 Benutzern empfehlen, aber in der Praxis würde ich empfehlen, dass Sie nie eine Access-Datenbank verwenden, in denen es mehr als einen einzelnen Benutzer ist, aber wenn Sie haben nicht wirklich die Wahl, um es für zwei oder drei, unter bestimmten Maßgaben akzeptabel ist.

Ich habe Erfahrung von vier oder fünf Systeme hatten eine Access-Datenbank mit Back-End - alles aus anderen ‚Entwickler‘ erworben - und in allen Fällen habe ich sie zu SQL Server als die als Priorität nach irgendwelchen unmittelbaren Updates verschoben und Korrekturen erforderlich, wenn der Vertrag unter - in der Regel, sobald ich den Chef die Zahlung der Rechnung in sie sprechen konnte. Die Zeitspanne für das ist in der Regel mehrere Monate, so habe ich es für eine angemessene Zeitspanne unter mehreren verschiedenen Anwendungen laufen gleichzeitig gesehen.

Eigentlich wird es im allgemeinen leidlich gut funktionieren, wenn das System nicht viele gleichzeitige Einsätze / update hat und ist nicht stark genutzt. Die wichtigsten praktischen Probleme in meiner Erfahrung sind ..

  1. Es ist verantwortlich für Korruption - es funktioniert einfach. Im Allgemeinen ist dies nicht zu viel von einem Problem, da die Datei zu öffnen und kompakt und Reparatur ausgeführt wird die Probleme aussortieren, aber ein gutes Backup-Regime ist unbedingt erforderlich.

  2. Es ist langsam. Jedes Mal, wenn ich ein System zu SQL Server aktualisiert habe Ich habe für die Beschleunigung des Systems von den Benutzern viel Lob erhalten.

  3. Die Datenbankdatei bläht wegen der Art und Weise, dass Access markiert Datensätze als aktualisiert oder gelöscht werden. Dies verlangsamt das System weiter als die Datei über das Netzwerk geladen werden muss. Folglich einige Regime, das die Daten komprimiert, in der Regel auf einer täglichen Basis, ist von wesentlicher Bedeutung.

Alle oben genannten sind viel weniger ein Problem mit Single-User-Systeme wie die zugrunde liegenden Probleme, die diese sind viel weniger prominent aufgefordert.

Alles in allem muss ich betonen, dass ich nie Zugang für jeden Multi-User-System empfehlen. Allerdings, wenn wirklich haben auch Sie wahrscheinlich weg mit ihm werden, so lange es eine wenig genutzter Anwendung ist und Sie tun, um die Sicherungs- und Wartungsverfahren einzuleiten.

Es ist schon mehrmals verwenden, um einen echten Multi-User, kostenlose Datenbankplattform angegeben worden. Aber einer der Gründe ist, warum nicht festgestellt worden. Der Grund hierfür ist, wie viele bestehend, unordentlich, lästig, große Access-Datenbanken haben als „ein paar Aufzeichnungen, ein oder zwei Benutzer max“ beginnen? Ich wage alle von ihnen zu sagen.

Es sei denn, es sind nur zwei oder drei Mitarbeiter im gesamten Unternehmen, die Chancen, dass, wenn Sie ein nützliches Stück Software zu entwickeln, es geht schließlich um mehr als die ursprünglichen zwei oder drei Benutzern verwendet werden, haben mehr als das Original einige tausend Datensätze und wird im Laufe der Jahre erweitern, um viele Formen, viele weitere Tabellen und vieles mehr Daten enthalten. Sie können nicht das Fundament eines Hauses Redo einmal das Haus gebaut ist. Bauen Sie ein starkes Fundament heute, und Sie können das Haus zu Inhalt Ihres Herzens erweitern. Das Gleiche gilt für Software.

Wenn Sie mit einer Netzwerkfreigabe gehen würde ich mit einer Netzwerk-fähigen Datenbank (mysql / Firebird / MSSQL) statt Zugang zu gehen.

Für die Situation, Ihre beschreibt mithilfe von Access wäre kein Problem sein.

Ich habe Zugang in schwierigeren Situationen verwende dann meist diese, wenn sie mit Websites zu arbeiten, wenn Zugang über die Maßen nicht missbraucht wird es wirklich nicht so schlimm ein Datenbank-Engine ist. (Nicht sprechen über Formen und Sachen wie, dass nur Tabellen und Datensätze)

Wenn Sie tun Einsätze / Updates / von mehreren Benutzern löscht sofort dann wird es ein bisschen haarig. Dies ist der Punkt, an dem Sie echten Datenbank-Engines zu denken beginnen.

Auch wenn Sie eine niedrige Overhead-Datenbank wollen, das sicher ist fädeln Sie einen Blick auf VistaDB haben können (langsamer dann Zugang, nicht immer frei, 100% .NET)

Ich denke, Zugriff verwendet Sperren auf Tabellenebene mit irgendeiner Art von Mechanismus Dinge queeing sollte ok arbeiten. Wenn Ihre Sorgen darüber können Sie immer einen simulierten Stresstest an ihn werfen.

Ich glaube, Sie es in Ihrer .net-Anwendung Verbindungszeichenfolge definieren. Ich googeln für JET, Zugriff und Datensatzsperren

hier ist ein Link rel="nofollow, die helfen könnten.

Bitte beachten Sie die akzeptierte Antwort für echte Informationen darüber, wie Access und JET Daten.

Bitte verwenden Sie nicht Zugang für ein Multi-User-Szenario.

Ich habe gerade über zwei Wochen Schmerzen weg, weil mein predeccessor an einem Projekt Access als Backend gewählt hat.

Konkrete Gründe:

  • Es gibt nicht so etwas wie Linq-to-Access
  • Zugriff hat zahlreiche Macken wie Abhängigkeiten von der Reihenfolge der Zugabe von Parametern auf Befehle, die Sie im Alter zu debuggen nehmen
  • Access nicht maßstabs
  • Datenbank-Updates ist eine lästige Pflicht, im Vergleich zur Verwendung von SQL Server
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top