Re: SQL Funktionsfrage

From: Elmar Boye (ElmarB_at_gmx.net)
Date: 08/03/04


Date: Tue, 3 Aug 2004 10:59:42 +0200

Hallo Stefan,

Stefan Mis Software <anonymous@discussions.microsoft.com> schrieb ...
> Als wir schon vor 4 Jahren auf SQl umsteigen wollten,
> standen wir ja schonmal vor dem gleichen Problem. Es kann
> aber nicht sein, das eine alte Superbase Anwendung mehr
> kann, als das neue SQL, abgesehen vom schnellen SQL Tempo.

Dabei gehts nicht um "mehr oder weniger". Sondern das Konzept
ist ein anderes.
Und das musst Du schon schlucken, sonst wirst Du mit keinem
relationalen Datenbanksystem glücklich werden.

Superbase kommt aus der ISAM Welt wie auch Dbase und in Teilen
selbst Microsoft Access. Und dort gabs diese Sichtweise.
Allerdings mit dem fatalen Nachteil, das dies nur für eine
Handvoll Benutzer funktioniert.

Um mal es an Deinem Mahnbeispiel aufzuhängen:
Gegeben sei eine Mahntabelle mit 3 Einträgen, nennen
wir sie einfallslos 4711 bis 4713. 4711 ist bereits
abgeschlossen und 4712 sowie 4713 sind noch unbearbeitet.

Benutzer A eröffnet die Bearbeitung von 4712 und sperrt
somit die Daten.
Benutzer B möchte nun alle unbearbeiteten Transaktionen
sehen, also etwas wie SELECT * FROM Mahnungen WHERE Offen = 1
Und da kommt die Crux: Was ist mit 4712?
Ist sie nun offen oder ist sie geschlossen?
Da die Frage nicht zuverlässig beantwortet kann, wartet
Benutzer B nun auf A ... der führt ein längeres Telefonat
... wartet ... trinkt einen Kaffee ...

Es gibt zwar diverse Variationen zu dem Thema, wie Lesen
von älteren Versionen oder das übergehen von Sperren.
Aber die lösen das Problem letztendlich auch nicht, da
es nur dazu führt das Benutzer B die Mahnung 4712 sieht.
Und was er dann macht kann absolut sinnfrei sein ->
siehe erster Beitrag. A wirft die Mahnung raus,
er eröffnet sie wieder oder anders rum.

> Anscheinend kann SQL ja nicht mal unterschiedliche
> Zugriffsrechte unterscheiden, z.B. jeder darf den
> Datensatz nur lesen, aber ich bin Highlander und nur ich
> darf ihn ändern, weil ich im Textfeld stehe.

Nette Formulierung, aber nützt Dir auch nichts.
Nehmen wir nun mal in der Erweiterung an, wir möchten
die Summe der offenen Mahnungen ermitteln...
Ist 4712 nun offen oder nicht?

Wie schon mal angedeutet: Bitte informiere Dich mal näher
darüber wie eine Transaktion in SQL definiert ist.
Und das wird in der Regel mit dem Akronym ACID beantwortet.
Und heisst dort nicht etwa ätzend ;-), sondern steht für
Atomar, Konsistent, Integrität und Dauerhaftigkeit eines Wertes.

Und eine Folge ist, dass man nicht einfach Datenzeilen sperrt
(auch wenn es so schön einfach ist). Eine durchaus übliche
Lösung für die skizzierte Mahnbearbeitung wäre z. B. die
Stati (offen, wird bearbeitet, erledigt) jeweils in eigenen
Transaktionen durchzuführen.
Also Benutzer A blockiert nicht einfach 4712, sondern wird
sich die Mahnung zur Bearbeitung holen.
Ist er damit fertig (oder bricht er die Bearbeitung wegen
des Telefonats oder des Kaffeedufts ab) wird der Status
entsprechend erneut geändert.

> In Superbase kommuniziert die Anwendung mit dem Server.

Was letztendlich die Anwendung für ihn durch jeweils
eine kurze Transaktion für ihn transparent erledigt.
Sprich Die Anwendung (respektiver Du als Programmierer)
kommunizierst mit dem Server.

Gruss
Elmar



Relevant Pages

  • Re: Datenschutz
    ... NT-Gruppe zusammenfaßt und dieser die entsprechenden Rechte gibst. ... Auf dem System müssen die Benutzer sowieso angelegt werden. ... Also kann sie mit den Tabellen ... nichts machen, egal, ob sie über ADP oder EM auf den SQL Server gehen. ...
    (microsoft.public.de.access.clientserver)
  • Re: xp_cmdshell mit UNC-Pfad
    ... Nur wenn Quelle oder Ziel auf einen Netzwerkpfad zeigt, ... 'Verwenden des Kontos "Lokales System" ... verhindert die Interaktion der SQL Server-Installation mit anderen ... Du mußt einen Benutzer auf dem Lokalen ...
    (microsoft.public.de.sqlserver)
  • Re: SQL2005 Spiegelung -> nahe der Verzweifelung
    ... Damit darf nur der Windows-Benutzer Gast sich mit dem SQL Server ... > b) Benutzer "Gast" entfernen wenn er dort drin steht. ...
    (microsoft.public.de.sqlserver)
  • Re: Anmeldung und Rechtevergabe
    ... Sicherheit auf SQL Server Ebene ... dass nur bestimmte Benutzer ... Sicherheit an den SQL Server geht. ...
    (microsoft.public.de.german.entwickler.dotnet.datenbank)
  • Re: Transaktionen: Isolation =?ISO-8859-1?Q?durchl=F6chern?=
    ... Bearbeitung beginnt, aber nie abschickt/speichert. ... Das kann mit einem Timeout abgefangen werden. ... Die Benutzer öffnen die Seite mit dem Bearbeitungsformular auch ...
    (de.comp.datenbanken.misc)