Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi DB Abgleich (https://www.delphipraxis.net/99377-db-abgleich.html)

Tim Henford 11. Sep 2007 11:54

Datenbank: MS SQL 2000 • Zugriff über: ADO

DB Abgleich
 
Hallo,

gibt es eine einfach Lösung eine lokale MSSQL 2000 DB mit einer im Netzwerk abzugleichen und wie kann man Übeschneidungen behandeln oder muss man sich ein eigens Konzept basteln?

Danke Tim

mkinzler 11. Sep 2007 11:58

Re: DB Abgleich
 
Am Besten indem man verschiedenen Wertebereiche für die IDs und GUIDS für diese verwendet.

Tim Henford 11. Sep 2007 13:28

Re: DB Abgleich
 
Was passiert eigentlich, wenn ich gerade mehrere Datensätze schreiben bzw. posten will und das Netzwerk zusammenbricht oder ein Stromausfall kommt - ist die DB dann "zerstört"?

mkinzler 11. Sep 2007 13:29

Re: DB Abgleich
 
Nein, dank Transaktionssteuerung wird die Transaktion zurückgefahren (rollback).

Phoenix 11. Sep 2007 13:31

Re: DB Abgleich
 
Vorausgesetzt, man verwendet Transaktionen. Tut man das nicht, sind halt alle Änderungen die bis zum Verbindungsabbruch vollständig abgesetzt wurden auch wirklich in der Datenbank.

Tim Henford 11. Sep 2007 13:36

Re: DB Abgleich
 
wie läuft das mit der Transaktionssteuerung, muss man da was einstellen oder geht das automatisch?
Wie verifiziert dann die DB, ob der Eintrag nun halb oder schon komplett war?

Gilt das auch für den Fall, dass der Server abstürzt?
Kann man darüber irgendwo was lesen?

Ich lasse von meinen Programm eine Sperrliste anlegen, damit kein anderer User im gleichen Moment auf die DB zugreifen kann, kann es passieren, dass ein anderer User im gleichen Moment auch eine Sperrlist erzeugt?

Phoenix 11. Sep 2007 13:43

Re: DB Abgleich
 
Hrm? Beim SQL Server kann man Tabellen explizit sperren. Wobei es unsinnig ist, einen Table lock zu setzen wenn man nur eine Handvoll Datensätze anpacken will...

Ein Datenbankserver stürzt im übrigen nicht einfach so ab. Und für den Fall eines Stromausfalls hängt man halt eine USV dran.

Die Datenbank erkennt ein komplettes Statement in der Regel an einem abschliessenden Semikolon, und führt das Ding dann aus. Danach kommt die nächste Anforderung dran die empfangen wird. Solange ein Statement nur halb da ist wird auch nix ausgeführt.

Transaktionen:
BEGIN TRANSACTION
update, insert, delete, wasauchimmer...
... und wieviel man mag.

Wenn alles okay:
COMMIT TRANSACTION

Wenn nicht okay:
ROLLBACK TRANSACTION

Geht die Verbindung zwischendrin flöten wird automatisch ein rollback durchgeführt.

Tim Henford 11. Sep 2007 13:48

Re: DB Abgleich
 
Danke für die Hilfe.

Ja Frage ist nur, was passiert, wenn plötzlich doch irgendwas abstürzt beispielsweise auf dem Server selbst.

Wie funktioniert das mit dem Table lock? Geht das beim MSSQL2000 und den normalen Ado-Komponenten unter Delphi 7 auch bereits?

Phoenix 11. Sep 2007 13:56

Re: DB Abgleich
 
Was soll denn da Abstürzen? :gruebel:
Wenn der Server einfach mal so abkachelt, dann hat wer auch immer ein größeres Problem, als eine nicht abgeschlossene Transaktion.

Nochmal: Du kannst zwar eine Tabelle locken, aber es macht nicht viel Sinn.
Arbeitest Du mit einer Transaktion, dann werden die Daten erst nach Abschluss der Transaktion geschrieben und auch erst dann für andere User sichtbar. Ein Write-Lock wird inenrhalb der Transaktion automatisch gesetzt, das heisst solange die Transaktion läuft kann kein anderer User einen engepackten Datensatz schreibend locken.

Ein kompletter Read-Lock auf der Tabelle würde a) andere Sessions komplett blockieren und b) ist er wie gesagt unsinning wenn nur ein paar Datensätze angepackt werden.

Tim Henford 11. Sep 2007 14:01

Re: DB Abgleich
 
ok, danke dir.
Ein write Lock reicht ja schon, wenn die Sperrlistentabelle erstellt wird, nur darf der nicht gleichzeitig von 2 Usern kommen...das war mein Bedenken


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:03 Uhr.
Seite 1 von 4  1 23     Letzte »    

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