ADS Gesperrte Datensätze

Advantage Database Server

Moderator: Moderatoren

Antworten
Dominik Krebs
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 197
Registriert: Mo, 15. Apr 2019 16:19
Hat sich bedankt: 10 Mal
Danksagung erhalten: 4 Mal

ADS Gesperrte Datensätze

Beitrag von Dominik Krebs »

Hallo Zusammen,
ist es möglich mir über den ADS Server anzeigen zu lassen wer genau welchen Datensatz gesperrt hat?
Ich habe nichts derlei gefunden und mich würde interessieren wie Ihr dies handhabt.
Ich verwende ein ADD.

Liebe Grüße
Gruß Dominik
Benutzeravatar
Marcus Herz
1000 working lines a day
1000 working lines a day
Beiträge: 851
Registriert: Mo, 16. Jan 2006 8:13
Wohnort: Allgäu
Hat sich bedankt: 39 Mal
Danksagung erhalten: 192 Mal
Kontaktdaten:

Re: ADS Gesperrte Datensätze

Beitrag von Marcus Herz »

Der ARC zeigts schon an, aber nicht sehr optimal:
Management Console -> Connected Users
in dem mitteleren Panel zeigt er die gesperrten Sätze zu der Tabelle unter an. Man muss also alle Tabellen und User durchscrollen, um den zu finden.
Alternativ muss mna sich was selber schreiben, die API ist gut beschrieben.
Gruß Marcus

Erkenne, was du findest, dann weißt du, wonach du gesucht hast
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: ADS Gesperrte Datensätze

Beitrag von Tom »

Die ADSMG.LIB/DLL (müsste in den Beispielen stecken) wrappt einige ACE-Funktionalitäten, darunter "AdsMgGetLockOwner" - eine Funktion, die Dir die gelockten Tabellen, die gesperrten Datensätze und die Besitzer der Sperrungen liefert.
Herzlich,
Tom
Dominik Krebs
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 197
Registriert: Mo, 15. Apr 2019 16:19
Hat sich bedankt: 10 Mal
Danksagung erhalten: 4 Mal

Re: ADS Gesperrte Datensätze

Beitrag von Dominik Krebs »

Klasse vielen Dank.
Hat denn schon jemand etwas eigenes in diese Richtung geschrieben?
Gruß Dominik
Benutzeravatar
nightcrawler
1000 working lines a day
1000 working lines a day
Beiträge: 650
Registriert: Di, 24. Apr 2012 16:33
Wohnort: 72184 Weitingen
Hat sich bedankt: 3 Mal
Danksagung erhalten: 96 Mal
Kontaktdaten:

Re: ADS Gesperrte Datensätze

Beitrag von nightcrawler »

das ganze kann man auch über SQL erledigen. Schau mal die system procedures in der Hilfe durch.
--
Joachim
Joachim Dürr Softwareengineering
https://www.jd-engineering.de
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2932
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: ADS Gesperrte Datensätze

Beitrag von Wolfgang Ciriack »

Hat denn schon jemand etwas eigenes in diese Richtung geschrieben?
So wie Tom bemerkte, einfach das Alaska Beispiel (...\Xbase++\source\samples\adsdbe\console) ausführen oder adaptieren.
Viele Grüße
Wolfgang
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: ADS Gesperrte Datensätze

Beitrag von Tom »

Das geht relativ einfach zweischrittig. Man holt sich zuerst über "AdsMgGetOpenTables()" die geöffneten Tabellen und arbeitet dann für das zurückgereichte Array mit "AdsMgGetLocks()" die Locks ab. Im Code der ADS Management Console (ist in den Beispielen) kann man das recht einfach nachvollziehen.
Herzlich,
Tom
Benutzeravatar
nightcrawler
1000 working lines a day
1000 working lines a day
Beiträge: 650
Registriert: Di, 24. Apr 2012 16:33
Wohnort: 72184 Weitingen
Hat sich bedankt: 3 Mal
Danksagung erhalten: 96 Mal
Kontaktdaten:

Re: ADS Gesperrte Datensätze

Beitrag von nightcrawler »

Hab da mal was zusammengestrickt:

Code: Alles auswählen

CREATE PROCEDURE GetAllLocks(tablename cichar(255) output, recNo Integer output, username cichar(255) output)
begin 
declare @tables CURSOR AS execute procedure sp_mggetalltables();
declare @locks CURSOR AS execute procedure sp_mggetalllocks(@tables.tablename); 
declare @lockowner CURSOR AS execute procedure sp_mggetlockowner(@tables.tablename, @locks.LockedRecNo); 
OPEN @tables;
while fetch @tables do
  open @locks;
  while fetch @locks do
    open @lockowner;
	while fetch @lockowner do
          insert into __output(tablename, recNo, username) values (trim(@tables.tablename), @locks.LockedRecNo, trim(@lockowner.username));
	end;
	close @lockowner;
  end while;
  close @locks;
end while;
close @tables;
end;
Dann nur noch:

Code: Alles auswählen

execute procedure GetAllLocks();
--
Joachim
Joachim Dürr Softwareengineering
https://www.jd-engineering.de
Dominik Krebs
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 197
Registriert: Mo, 15. Apr 2019 16:19
Hat sich bedankt: 10 Mal
Danksagung erhalten: 4 Mal

Re: ADS Gesperrte Datensätze

Beitrag von Dominik Krebs »

Das ist ja super, genau das was ich brauche. Vielen Dank :D
Gruß Dominik
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: ADS Gesperrte Datensätze

Beitrag von UliTs »

Ich bin gerade über diesen Faden gestolpert. Kann jemand ihn in das ADS Unterforum verschieben?
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16502
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: ADS Gesperrte Datensätze

Beitrag von Martin Altmann »

'ledscht!

Schöne Feiertage,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Antworten