AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi BDE/MSSQL Tabelle gelockt bei SELECT
Thema durchsuchen
Ansicht
Themen-Optionen

BDE/MSSQL Tabelle gelockt bei SELECT

Ein Thema von Sunny · begonnen am 22. Apr 2004 · letzter Beitrag vom 22. Apr 2004
Antwort Antwort
Sunny

Registriert seit: 22. Apr 2004
5 Beiträge
 
#1

BDE/MSSQL Tabelle gelockt bei SELECT

  Alt 22. Apr 2004, 09:01
Hallo zusammen,

ich bin gerade über ein Problem gestolpert.

Wenn ich über BDE - TQuery einen einfachen SELECT auf
eine Tabelle ( MSSQL ) mit einigen 100 Einträgen ausführe,
wird offensichtlich nur ein Teil der Tabelle gelesen.
( laut SQL-Monitor )

Zugriff mit readOnly und requestlive = FALSE

Soweit noch OK.

NUR! die Tabelle ist nun gelocked.

Sobald ich ans Ende der Tabelle springe ( mit last ) oder
den recordcount lese wird die Sperre aufgehoben.

Kann man dieses Locking irgendwie verhindern ?
Beste Grüße
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.606 Beiträge
 
#2

Re: BDE/MSSQL Tabelle gelockt bei SELECT

  Alt 22. Apr 2004, 10:17
Er ja. Guck mach nach dem Stichwort dirty reads.

Aber wundere Dich dann nicht, wenn Du auf einmal einen halb geänderten Datensatz im Resultset hast. Die Locks setzt die Datenbank ja nicht umsonst
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Sunny

Registriert seit: 22. Apr 2004
5 Beiträge
 
#3

Re: BDE/MSSQL Tabelle gelockt bei SELECT

  Alt 22. Apr 2004, 11:50
Hallo Phoenix,

das locking ist ja während des Lesens von den n ersten Zeilen OK.
Aber warum muß ( die BDE ? ) bis zum Weiterlesen die Tabelle
gelockt halten ?

Ich fürchte das Problem liegt irgendwo in der BDE in Zusammenhang
mit MSSQL 7.0
Beste Grüße
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.170 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: BDE/MSSQL Tabelle gelockt bei SELECT

  Alt 22. Apr 2004, 12:27
Warum wechselst Du nicht auf ADO(-Express)? Ist für M$-SQL eh die bessere (weil problemlosere) Alternative. Und dort kannst Du auch sehr einfach den Sperr-Typ einstellen.
  Mit Zitat antworten Zitat
Sunny

Registriert seit: 22. Apr 2004
5 Beiträge
 
#5

Re: BDE/MSSQL Tabelle gelockt bei SELECT

  Alt 22. Apr 2004, 12:41
ADO ist sicher eine Alternative.

Trotzdem würde mich interessieren, ob dieses Verhalten
grundsätzlich vorhanden ist, oder ob es noch eine Möglichkeit
das Locking zu unterbinden.

Ich hoffe immer noch, daß ich irgendwo etwas übersehen habe.
Beste Grüße
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#6

Re: BDE/MSSQL Tabelle gelockt bei SELECT

  Alt 22. Apr 2004, 13:12
Record locking beim Lesen ist doch totaler Käse!
Frag's Pferd warum (oder ob) das bei der BDE eine Standardeinstellung ist. Beim Auslesen bekommt die Abfrage die aktuellsten konsistenten Daten (wenn also für ein paar Einträge noch Transaktionen ausstehen, sieht man die Version dieser Einträge vor der Transaktion).
Du würdest doch sonst alles lahm legen, da ja ständig irgendein Client Daten abfragt.
Eingeber 1 lädt eine Seite, Eingeber 2 will in die gleiche Tabelle zu einem anderem Patienten schreiben -> soll der etwa immer einen Augenblick warten, nur weil irgend jemand gerade die Daten abfragt???

Zitat:
Aber wundere Dich dann nicht, wenn Du auf einmal einen halb geänderten Datensatz im Resultset hast. Die Locks setzt die Datenbank ja nicht umsonst
Das verstehe ich nicht ganz...
Ein Datensatz kann doch nur halb geändert sein, wenn der Entwickler so unfähig ist und Änderungen pro Feld durchführt.
Zusammegehörenden einträge werden gemeinsam in einer Transaktion gespeichert (zum Bleistift eine Seite in der Eingabemaske).
Die Abfrage kann dann einfach keine inkosistenten Daten bekommen.

Vielleicht bin ich ja zu blöd ( ), aber ich kann da absolut gar keinen Sinn erkennen, warum ein SELECT-Statement die Tabelle sperren sollte.

Edit: 5 mio. Tippfehler...
  Mit Zitat antworten Zitat
Benutzerbild von Smokey
Smokey

Registriert seit: 10. Nov 2003
Ort: Puerto de la Cruz
158 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: BDE/MSSQL Tabelle gelockt bei SELECT

  Alt 22. Apr 2004, 13:44
Das Sperren beim Lesen hat durchaus seine Berechtigung, da es zu mehreren fehlern kommen kann.
1. unrepeatable Read
2. falsche Summenbildung
3. Dirty Read

wollte nun gerade anfangen dir einige beispiele dazu zu nennen, was alles schiefgehen kann, wenn du keine Lesesperre setzt, aber meine Kollegen schreien nach mittagspause und essen. Und das würde alles etwas länger dauern

Aber kannst ja mal nach den Sachen suchen, man findet da Massen an Seiten zu.
Das Problem mit dem Typ A liest Daten von Patient A, dadurch kann Typ B nicht Patient B ändern ist nur ein sehr geringes Problem.
Zum einen dauert ein reiner Lesezugriff nur minmal lange
Zum anderen werden bei guten DB-Systemen nicht ganze Tabellen gesperrt

Naja Transactionen sind nen riesen Thema...aber soviel kann gesagt werden : Lesesperren sind wahrlich nicht unnütz
Greif dir ein gutes Stück Fleisch auf deinem Weg nach draussen !!!
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#8

Re: BDE/MSSQL Tabelle gelockt bei SELECT

  Alt 22. Apr 2004, 13:50
Zitat:
Schreibsperren sind wahrlich nicht unnütz
Gegen das Sperren beim Schreiben sage ich ja auch nix
  Mit Zitat antworten Zitat
Benutzerbild von Smokey
Smokey

Registriert seit: 10. Nov 2003
Ort: Puerto de la Cruz
158 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: BDE/MSSQL Tabelle gelockt bei SELECT

  Alt 22. Apr 2004, 14:44
ups, in der Eile Richtung Pool/Essen zu kommen habsch tatsächlich Schreibsperre geschrieben...sofort mal ändern
Greif dir ein gutes Stück Fleisch auf deinem Weg nach draussen !!!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:55 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz