Delphi-PRAXiS

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

Tim Henford 17. Mär 2007 10:31

Datenbank: MSSQL • Zugriff über: ADO

offline DB
 
Hallo,

also ich habe das Problem, dass ich eine Datenbank auf einem Server liegen habe, an der mehrere Leute arbeiten sollen.
Die Leute müssen die DB aber im Prinzip offline mit nach Hause nehmen können um weiter daran zu arbeiten.
Da hab ich erst mit StringGrid und Files die Inhalte der Tabellen der DB gespeichert, aber da gehen ja viele Dinge verloren, wie Datentyp usw.

Was gibt es denn da für eine bessere Lösung, damit ich die DB trotzdem offline sozusagen editieren kann, ohne das was verloren geht?

mkinzler 17. Mär 2007 10:32

Re: offline DB
 
-Replikation
-ClientDataSet

Tim Henford 17. Mär 2007 11:29

Re: offline DB
 
Huh, uh kannst du mir bitte noch ein wenig mehr schreiben?
Hab gerade gelesen das SQL-Anweisungen wohl nicht möglich sind...gibt es da Probleme beim Filtern und Sortieren?
:pale:

Jelly 17. Mär 2007 12:19

Re: offline DB
 
Zitat:

Zitat von Tim Henford
Hab gerade gelesen das SQL-Anweisungen wohl nicht möglich sind...gibt es da Probleme beim Filtern und Sortieren?

Ohne was Böses zu unterstellen, aber bist Du sicher dass deine DB Kenntnisse fundiert genug sind. Ich hoffe doch, du hast nicht ernsthaft in Erwägung gezogen, deine Tabellen in einer Stringlist abzuspeichern, oder ?

Der SQL Server von Microsoft bietet von Haus aus Replikationsmechanismen, zu mindest ab einer gewissen Version (ich glaub die Standard Edition kann das nicht). Das heisst aber noch lang nicht dass auf Client Seite nichts zu ändern und zu berücksichtigen wäre. Das Problem ist allgemein das folgende:

Da mehrer Benutzer gleichzeitig an ihrer lokalen DB rummachen, muss auch jeder seine Änderungen irgendwie in die Hauptdtenbank zurückspielen. Und das bringt gleich mehrere Probleme mit sich:
  • Neue Datensätze müssen übertragen werden
  • Du musst sicherstellen dass alle Benutzer lokal ihre eigenen Primary Keys verwalten, und dass diese später auch eindeutig in der Hauptdatenbank bleiben
  • Änderungen müssen erkannt werden. Dabei kann Concurrency auftreten, sprich mehrere Benutzer ändern in ihren lokalen Kopien den gleichen Datensatz
  • gelöschte Datn müssen auch gelöscht werden

Also deshal mein Tipp: lies dich mal rcihtig in die Thematik der Datenbankreplikation rein. Der SQL Server nimmt Di ja da schon das meiste an Arbeit ab.

Tim Henford 17. Mär 2007 12:59

Re: offline DB
 
danke jelly.
ja, sorry :pale: mit der Textfile war eine mächtig doofe Idee, da die Tabelle nicht so sehr groß war, dachte ich, dass das langen könnte, aber weit gefehlt!

Genau das Problem, dass du beschreibst versuche ich gerade zu lösen, indem ich jeder Tabelle eine "Created_at" und "Modified_At" Spalte hinzufügen wollte, sowie einen last_ServerContact in einer separaten Tabelle, sodass ich die Lokale und ServerTabellen dann abgleichen kann.
Denn was, weiß denn ich, was der MS SQL Server bei einem Update macht oder übernimmt oder wie auch immer?!


@mkinzler:
alles klar ClientDataSet funktioniert wunderbar...! Danke... :)

Jelly 17. Mär 2007 13:05

Re: offline DB
 
Zitat:

Zitat von Tim Henford
Denn was, weiß denn ich, was der MS SQL Server bei einem Update macht oder übernimmt oder wie auch immer?!

Du kannst im SQL Server eine bestehende Datenbank zur Replikation vorbereiten. Dabei werden in allen Tabelle automatisch zusaätzliche Spalten beigefügt, um eben genau die Kontrolle über Äderungen zu haben. Bei SQL 2000 geht das über den Enterprise Manager. Fehlt die Option bei dir, wirst du wohl auf eine höhere Version aufstocken müssen, willst du die internen Replikationsmöglichkeiten von MSSQL nutzen.

In Der Entwickler Zeitschrift war mal vor einigen Monaten ein Artikel über Datenbankreplikation für Firebird drin. Dort wurde eine Lösung nachgebaut, weil Firebird von Haus aus keine Replikation unterstützt. Vielleicht hilft dir der Artikel ja etwas weiter. Stöber mal in deren Archiven rum.

Tim Henford 17. Mär 2007 16:49

Re: offline DB
 
Irgendwie hab ich leider beim entwickler nichts auf Anhieb beim Durchblättern gefunden zum Thema Firebird und Datenreplikation :?

So nun hab ich mal ein bisschen rumexperementiert, aber
irgendwie steck ich hier schon fest, vielleicht stell ich mich ein bisschen an, aber so richtig findet man auch kein Tutorial

Sobald ich einen Snapshotordner angeben soll, erscheint die Fehlermeldung:
\\PCNAME\C$\\ReplData ist kein gültiger Pfad oder Dateiname

vorher gibt es schon Probleme mit
"Der SQL Server-Agent auf PCNAME verwendet momentan das Systemkonto, so dass die Replikation zw. Servern fehlschlägt...."

Muss hierfür ein Extra Konto angelegt werden?

Tim Henford 20. Mär 2007 07:40

Re: offline DB
 
So nun hab ich das Problem in den Griff bekommen, nun weiß ich nicht genau, wie das mit dem Abonnement aussieht.
Hab mir überlegt, dass wohl die Merge-Replikation am ehesten zutrifft.

Wie wird nun vom Clienten der SQLServer DB gesagt, dass er die neuen Daten von der DB haben möchte und seine neuen offline-erstellten Daten dabei nicht verloren gehen, sondern auch zurück zur DB gesendet werden?


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:14 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