MS Access hält Tabellenzeilen auf unbestimmte Zeit gesperrt

Wir verwenden MS Access als GUI für eines unserer Systeme, haben jedoch ein Problem festgestellt, bei dem Access die zugrunde liegenden Tabellen oder Zeilen sperrt, wodurch verhindert wird, dass SQL Server Aktualisierungsabfragen für diese Daten ausführt. Dies ist problematisch, da unser Access-Frontend nur Lesezugriff auf diese Daten erfordert, wir jedoch über Systeme verfügen, die die Daten in regelmäßigen Abständen aktualisieren. Diese Aktualisierungsvorgänge schlagen fehl (oder werden auf unbestimmte Zeit verzögert), da Access die Daten bereits sperrt.

Dieses Problem wird veranschaulicht, indem Sie das Access-Frontend öffnen und die DMV sys.dm_tran_locks verwenden, um Sperren für die Daten anzuzeigen. Die Schritte, die ich unternehme, um das Problem zu reproduzieren, sind:

Öffnen Sie das Access-Frontend. Dies zeigt ein scrollbares Formular mit mehreren tausend DatensätzenVerwenden Sie SQL Server-DMVs, um Sperren für die Daten anzuzeigen. Dies zeigt 5 Sperren vom Typ "Objekt" mit dem Anforderungsmodus "IS" (Intent shared). Bei Verwendung von sys.dm_exec_requests wird der Befehlsstatus als "angehalten" und der Wartetyp als "ASYNC_NETWORK_IO" angezeigt. Diese Sperren werden so lange gehalten, wie der Benutzer das Access-Frontend geöffnet hat, und verhindern Aktualisierungs-, Lösch- und Kürzungsvorgänge für die betroffenen Tabellen. Nun wenn der Userscrollt zum Ende des Datensatzes in Access werden die Sperren freigegeben!

Das zweite Problem tritt auf, wenn der Benutzer durchklickt, um einen einzelnen Datensatz im Frontend anzuzeigen. Wenn ein einzelner Datensatz auf dem Bildschirm angezeigt wird, zeigen die SQL Server-DMVs diese Sperren an: 3x Objekt, 1x Schlüssel, 1x Seite. Der Schlüssel ist ein gemeinsames Schloss, andere werden absichtlich geteilt. Der Befehlsstatus wird erneut angehalten und der Wartetyp lautet ASYNC_NETWORK_IO. Und diese Sperren werden gehalten, solange der Benutzer den Datensatz anzeigt

Wir müssen den Zugang davon abhalten, diese Schlösser auf unbestimmte Zeit zu halten. Leider ist MS Access nicht Teil meiner Fähigkeiten, sodass ich nicht weiß, was zu tun ist, um dies zu beheben.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage