Delphi-PRAXiS
Seite 3 von 4     123 4      

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)

Phoenix 11. Sep 2007 14:52

Re: DB Abgleich
 
Du suchst Dir die Datensätze im voraus aus, die Du ändern musst - und bei denen Du den User um angaben bitten musst.
Auf genau diese setzt Du einen rowlock. Damit können diese Datensätze (und auch nur diese) nicht mehr geändert (oder gelöscht) werden. Und dann änderst Du die in einer Transaktion.

Tim Henford 12. Sep 2007 13:55

Re: DB Abgleich
 
Vielleicht wären noch ein paar Hinweise hilfreich, wie man mein Problem am besten löst:

Es sind im Moment 4 PCs die verschiedene Sachen messen und in unterschiedlichen Tabellen auf einer DB speichern sollen. Dabei kann es aber sein, dass diese ab und zu nicht am Netz hängen oder aus einem dummen Zufall mal abstürtzen können.
Mehr nicht, die sammeln eigentlich nur Daten.
Allerdings kommen im Laufe der Zeit immer mal andere Parameter/Spalten hinzu und evtl. wieder weg.

Dann soll es noch möglich sein, diese gesammelten Daten zu vergleichen, bearbeiten und eventuell zu löschen von 3 anderen Leuten, jeder an einem anderen PC, die aber auch nicht immer mit dem DBServer verbunden sein können und ihre Daten "offline" ändern müssen.
Wäre es da sinnvoll lokal auch einen MSSQL Server laufen zu haben?

Danke Tim

mkinzler 12. Sep 2007 13:59

Re: DB Abgleich
 
Ja ich würde überall die MSDE/SQL Express Laufen lassen, und jedem PC einen anderen ID-Bereich geben, so ist es relativ einfach die daten auf Serverseite zusammenzuführen; auch automatisch.

Tim Henford 12. Sep 2007 14:07

Re: DB Abgleich
 
Wie genau funktioniert dann das "serverseitige Zusammenzuführen"?
An dieser Stelle komm ich irgendwie nicht weiter. Ich dachte mir, dass ich mittels Programm sage, jetzt soll ein Abgleich erfolgen und wenn es nicht klappt, soll es eben nur wieder lokal gespeichert werden.

Wie merke mein Programm, ob der Eintrag schon von jemand anders verändert wurde und kann den Nutzer entscheiden lassen, ob seiner richtig ist oder der auf der ServerDB?
:gruebel:

mkinzler 12. Sep 2007 14:18

Re: DB Abgleich
 
Durch eine Replikationslösung

Tim Henford 12. Sep 2007 14:21

Re: DB Abgleich
 
ja davor saß ich ja, aber wie kommuniziert die DB dann mit meinem Programm, also sagt: den Eintrag gibt es schon oder sowas?

mkinzler 12. Sep 2007 14:30

Re: DB Abgleich
 
Nochmal zum Mitschreiben:
-Jeder Client hat einen eigene Id-Bereich, so kann jeder Eintrag dem Rechner zugeordnet werden, welcher ihn erzeugt hat. Deshalb kann es nicht passieren, daß ein Eintrag schon vorhanden ist! der Replikationsmechanismus sorgt je nach Wunsch nur eine Mischung auf dem Server oder verteilt die Änderungen/Neuerungen der Client auf die anderen Clients.

alzaimar 12. Sep 2007 14:38

Re: DB Abgleich
 
Client #1: Vergibt in seinen Tabellen nur ID's 0...10000
Client #2: Vergibt in seinen Tabellen nur ID's 10001...20000
etc.

Dann kannst Du später einfach die Daten zusammenführen (lassen). Das macht der SQL-Server automatisch, man muss ihm das nur sagen (Stichwort: Replikation). Natürlich geht das auch per Hand, indem Du einfach z.B. auf dem Ziel-Server (der im Netz) ab und an die Daten von den Clients saugst und die Client-Daten dann löschst.

Du sprichst außerdem von irgendwelchen Änderungen in der Struktur. Das ist -soweit ich weiss- nicht die Aufgabe einer Replikation, sondern vom Administrator, der dafür Sorge tragen muss, das die einzelnen DB immer die gleiche Struktur aufweisen. Ich verwende dafür ein Tool von 'Red Gate', 'SQL-Compare' heißt das Teil. Das macht genau, was ich will: Es synchronisiert die Struktur, also Tabellenaufbau, Views, Stored Procedures etc. von zwei MS-SQL Datenbanken.

Weiterhin merkt man, das Du hinsichtlich der Ausfallsicherheit etc. von Datenbanken verunsichert bist. Vermutlich hast Du vorher mit einer Desktop 'Datenbank' gearbeitet, z.B. Access, Paradox oder DBase. Da passiert sowas nämlich, das die DB zerschossen ist, wenn beim Speichern der Strom ausfällt. Gegen ein richtiges DBMS kannst Du während des speicherns treten (ok, nicht bei MySQL), da passiert *gar nichts*. So eine richtige DB sorgt auch dafür, das zwei Leute nicht gleichzeitig an Daten rumwuseln können, wenn Du ihr das sagst.

Allerdings benötigt man dafür ein wenig Grundwissen über DB-Konzepte.

Tim Henford 12. Sep 2007 14:44

Re: DB Abgleich
 
ja danke für die Tipps

was passiert denn z.Bsp, wenn 2 Leute die gleichen Werte offline ändern und dann online ihren Kram hinschicken? Kommt dann erst ein Update sobald man online ist und dann sind die eigenen Änderung überschrieben?

Ich hab das Buch vom Herrn Kosch Ado und Delphi und Datenbanken mit Delphi aber sehr weit bringen die mich dahingehend leider net.

mkinzler 12. Sep 2007 14:50

Re: DB Abgleich
 
In diesem Fall sollte man festlegen, welcher Benutzer/Client Vorrang hat.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:56 Uhr.
Seite 3 von 4     123 4      

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