Einzelnen Beitrag anzeigen

Benutzerbild von MPirnstill
MPirnstill

Registriert seit: 19. Jul 2004
Ort: Burgdorf
197 Beiträge
 
Delphi XE8 Enterprise
 
#4

Re: Blockade anderer Anwender

  Alt 26. Apr 2006, 12:55
Hallo Leute!

Haben heute mal eine Test gemacht und es ist tatsächlich so, daß nach einer gewissen Anzahl an Änderung der SQL-Server 2000 auf Tabellensperre umschaltet, obwohl ich vom Programm aus nur einzelne Datensätze sperre. Es ist z.B. so:

Zitat:
Master-Tabelle:
P1ST
___Details:
+-> P1STKL
+-> P1STMP
+-> P1STHA
Detail-Tabellen sind mit der Master über Foreign-Key verknüpft.
Auf einen Datensatz aus P1ST kommen 4 in P1STKL, 4 in P1STMP und einer in P1STHA. Die Datensätze wurde zuvor angelegt und erst bei der Vervollständigung (EDIT) passiert es das nach einer gewissen Anzahl bearbeiteter Datensätze die Tabelle P1STKL plötzlich komplett gesperrt ist und damit alle anderen Benutzer, welche in der gleichen Dialogformular arbeiten gesperrt sind bis es zum SQLTimeout kommt bzw. der sperrende Benutzer in seinem Formular auf Speichern klickt.

In der Dokumentation des MS SQL-Server 2000 steht nun das die dynamische Sperrung automatisch unter gewissen Voraussetzungen die Sperre von Datensatz auf Datenseite auf Tabelle erweitert um Resource zu sparen. Hat die Version 6.5, welche wir früher im Einsatz hatten nicht gemacht.

Kann ich das irgendwie abschalten, darüber habe ich nämlich noch nichts gefunden, bzw. hat jemand evtl. ein andere Idee/Lösung?

Wie gesagt, im meinem Programm sage zu Beginn der Bearbeitung:
MyDatabaseObjekt.StartTransaction; und beim Post (sofern die Transaktion offen ist)
MyDatabaseObjekt.Commit; Da dürfte doch keine Sperre mehr offen sein.

[Edit]Noch vergessen! Vom meinem Programm her werden alle Benutzer unter dem gleichen SQL-Benutzer angemeldet. Haben es aber auch schon mit unterschiedlichen SQL-Benutzern getestet und da tritt die Blockade ebenfalls auf.[/Edit]
Gruß
Micha
Ich habe fertig!

DP - hier werden Sie geholfen!
  Mit Zitat antworten Zitat