Update-Befehl scheitert locking von zweitem User [ERLEDIGT]

Advantage Database Server

Moderator: Moderatoren

Antworten
UliTs
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2828
Registriert: Fr, 10. Feb 2006 9:51
Wohnort: Aachen
Hat sich bedankt: 259 Mal
Danksagung erhalten: 12 Mal
Kontaktdaten:

Update-Befehl scheitert locking von zweitem User [ERLEDIGT]

Beitrag von UliTs »

Hallo allerseits,

ich habe konkret folgendes Problem:
Ein Update-Befehl scheitert mit der Fehlermeldung
  • Error 5035: The requested lock could not be granted. The file or record may be locked by another user.
Wie kann ich bestimmen, durch welchen User der Datensatz gelockt ist? :?

Uli
Zuletzt geändert von UliTs am Fr, 28. Jun 2013 14:51, insgesamt 1-mal geändert.
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15696
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Update-Befehl scheitert wegen locking durch anderen User

Beitrag von brandelh »

Ob die ADS das intern macht weiß ich nicht, bei normalen DBF habe ich dafür ein Feld vorgesehen, das ich manuell fülle und wieder leere.
Geht natürlich nicht bei automatischem Lock ;-)
Gruß
Hubert
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9361
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 101 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Re: Update-Befehl scheitert wegen locking durch anderen User

Beitrag von Tom »

Bei der ADS kann man über die Funktionen, die die ACE32 zur Verfügung stellt, abfragen, welcher Nutzer aktiv ist, welche Tabellen genutzt werden und ob es (und wie viele) Locks gibt. Da gibt es auch fertige Wrapper für.

Allerdings - eine Sperrung hat zumeist einen Grund. Was willst Du tun, wenn Du weißt, wer sperrt? Es gibt zwar auch "Kill User", womit man einem ADS-Nutzer quasi die Füße wegschlagen würde, einschließlich der durch ihn verursachten Sperrungen, aber damit würdest Du riskieren, dass eine relevante Datenoperation zerstört wird.
Herzlich,
Tom
UliTs
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2828
Registriert: Fr, 10. Feb 2006 9:51
Wohnort: Aachen
Hat sich bedankt: 259 Mal
Danksagung erhalten: 12 Mal
Kontaktdaten:

Re: Update-Befehl scheitert wegen locking durch anderen User

Beitrag von UliTs »

Tom hat geschrieben:...
Was willst Du tun, wenn Du weißt, wer sperrt?
...
Vielen Dank für die Hinweise.

Im konkreten Fall möchte ich in der Fehlermeldung zusätzlich anzeigen, durch wen der Datensatz "gelockt" ist.
In anderen Fällen (z.B. wenn exklusiver Zugriff benötigt wird) zeige ich mit Hilfe von

Code: Alles auswählen

AdsMgGetUserNames
an, wer alles die Tabelle geöffnet hat. Und während ich dies schreibe, finde ich vermutlich auch schon die gesuchten Funktionen :-) :

Code: Alles auswählen

AdsMgGetLocks
AdsMgGetLockOwner
Damit kann ich vermutlich obiges realisieren :D

Uli
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Benutzeravatar
nightcrawler
1000 working lines a day
1000 working lines a day
Beiträge: 651
Registriert: Di, 24. Apr 2012 16:33
Wohnort: 72184 Weitingen
Hat sich bedankt: 3 Mal
Danksagung erhalten: 96 Mal
Kontaktdaten:

Re: Update-Befehl scheitert wegen locking durch anderen User

Beitrag von nightcrawler »

AdsMgGetLockOwner heißt der richtige Kandidat.
--
Joachim
Joachim Dürr Softwareengineering
https://www.jd-engineering.de
UliTs
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2828
Registriert: Fr, 10. Feb 2006 9:51
Wohnort: Aachen
Hat sich bedankt: 259 Mal
Danksagung erhalten: 12 Mal
Kontaktdaten:

Re: Update-Befehl scheitert locking von zweitem User [ERLEDI

Beitrag von UliTs »

Danke, hat wunderbar funktioniert :-)

Uli
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Antworten