Benutzer mit den meisten Antworten
AZURE SQL und Access

Frage
-
Ich verwende Access als Front end und greife damit auf eine Azure SQL Datenbank zu. Dabei tritt folgender Fehler auf.
- Ich habe eine Tabelle von Access in die Azure SQL DB exportiert.
- ich kann mit meiner Access Anwendung (VBA) die Datensätze beliebig editieren
- sobald ich aber einen neuen Datensatz anfüge (das funktioniert einwandfrei) und diesen in der Folge editieren möchte erhalte ich beim .update Statement die Fehlermeldung "Das Microsoft Jet-Datenbankmodul hat den Vorgang angehalten, da Sie und ein
weiterer Benutzer gleichzeitig versuchen, dieselben Daten zu ändern. (Fehler
3197)"- es ist aber definitiv kein weiterer Benutze aktiv (auch kein doppelter Zugriff via einer Form und nochmals über VBA)
- ich habe festgestellt, wenn ich aus der Tabelle alle "Datums" und "Ja/nein" Felder entferne funktioniert es einwandfrei.
- ich kann auch einzelnen dieser Felder wieder zufügen. Ab einer bestimmte Zahl dieser Felder tritt der Fehler auf. Konkret. Mit nachfolgender Tabelle kann ich beliebig Datensätze anfügen und diese wieder ändern.
ID (PS, int, Nicht Null)
projektnummer(int;Null)
kontakt_ID(int,NUll)
p_titel(nvarchr(255),Null)
p_datum(datetime2(7),Null)
p_kurzbeschreibung(bit,Null)
p_kb_freigabe(datetime2(7), Null)Füge ich jedoch dieses Feld an
p_vkmemo(bit,Null)kann ich zwar anfügen, aber diesen Datensatz in der Folge nicht mehr ändern, da o.g. Fehler auftritt.
Anzumerken ist,dass ich auch zahlreiche andere Tabellen mit "Datum" und "Bit" Feldern habe. Dort ist aber noch nie dieser Effekt aufgetreten. Ich weis nicht mehr weiter und hoffe, jemand hat eine Lösung für mich.
Antworten
-
Am 05.04.2017 schrieb hran:
Ich verwende Access als Front end und greife damit auf eine Azure SQL Datenbank zu. Dabei tritt folgender Fehler auf.
- Ich habe eine Tabelle von Access in die Azure SQL DB exportiert.
- ich kann mit meiner Access Anwendung (VBA) die Datensätze beliebig editieren
- sobald ich aber einen neuen Datensatz anfüge (das funktioniert einwandfrei) und diesen in der Folge editieren möchte erhalte ich beim .update Statement die Fehlermeldung "Das Microsoft Jet-Datenbankmodul hat den Vorgang angehalten, da Sie und ein
weiterer Benutzer gleichzeitig versuchen, dieselben Daten zu ändern. (Fehler
3197)"Ist die Tabelle in Access eingebunden? Bzw. in einem Formular
eingebunden? Falls ja, solltest Du immer in der SQL Server Tabelle ein
sog. Timestamp Feld anlegen und anschließend die Tabelle auch wieder
neu einbinden.Servus
Winfried
WSUS Package Publisher: http://wsuspackagepublisher.codeplex.com/
HowTos zum WSUS Package Publisher http://www.wsus.de/wpp
GPO's: http://www.gruppenrichtlinien.de
NNTP-Bridge für MS-Foren: http://communitybridge.codeplex.com/- Als Antwort vorgeschlagen Christoph Muthmann Donnerstag, 6. April 2017 05:30
- Als Antwort markiert Ivan DragovMicrosoft contingent staff, Moderator Donnerstag, 13. April 2017 12:48
Alle Antworten
-
Nur wegen der groben Richtung gab es hierzu folgenden Beitrag:
mit Verweis auf
https://msdn.microsoft.com/en-us/library/bb215995%28v=office.12%29.aspx?f=255&MSPPError=-2147217396
Evt. ist es möglich hier mit VBA den Recordlock vorher anzupassen, damit es erst gar nicht zu dem Fehler kommen kann.
----
https://www.sql-select.de - News und Blog
- Bearbeitet Jirko Cernik Mittwoch, 5. April 2017 15:07
-
Am 05.04.2017 schrieb hran:
Ich verwende Access als Front end und greife damit auf eine Azure SQL Datenbank zu. Dabei tritt folgender Fehler auf.
- Ich habe eine Tabelle von Access in die Azure SQL DB exportiert.
- ich kann mit meiner Access Anwendung (VBA) die Datensätze beliebig editieren
- sobald ich aber einen neuen Datensatz anfüge (das funktioniert einwandfrei) und diesen in der Folge editieren möchte erhalte ich beim .update Statement die Fehlermeldung "Das Microsoft Jet-Datenbankmodul hat den Vorgang angehalten, da Sie und ein
weiterer Benutzer gleichzeitig versuchen, dieselben Daten zu ändern. (Fehler
3197)"Ist die Tabelle in Access eingebunden? Bzw. in einem Formular
eingebunden? Falls ja, solltest Du immer in der SQL Server Tabelle ein
sog. Timestamp Feld anlegen und anschließend die Tabelle auch wieder
neu einbinden.Servus
Winfried
WSUS Package Publisher: http://wsuspackagepublisher.codeplex.com/
HowTos zum WSUS Package Publisher http://www.wsus.de/wpp
GPO's: http://www.gruppenrichtlinien.de
NNTP-Bridge für MS-Foren: http://communitybridge.codeplex.com/- Als Antwort vorgeschlagen Christoph Muthmann Donnerstag, 6. April 2017 05:30
- Als Antwort markiert Ivan DragovMicrosoft contingent staff, Moderator Donnerstag, 13. April 2017 12:48
-
Kurz zum Hintergrund. Eine Timestamp Spalte enthält keine Zeit, sondern einen Zähler der automatisch bei jeder Änderung erhöht wird. Falls eine solche Spalte vorhanden ist überprüft Access automatisch anhand dieser Nummer ob seit dem letzten Lesen eine Änderung stattgefunden hat. Das ist die Basis für das optimistische Sperren in Access und wesentlich robuster als der Abgleich aller Spalten, die alternativ stattfinden müsste.
Einen schönen Tag noch, Christoph -- Data Platform MVP - http://www.insidesql.org/blogs/cmu