norwegen60
Benutzer
- Beiträge
- 12
Hallo zusammen,
ich habe eine replizierte Datenbank für Prüfstände die auch bei nicht vorhandenem Netz sicher laufen müssen. Deshalb ist die DB als Merge-Replikation aufgebaut, d.h. Daten werden im 60s Takt zwischen Prüfstand und Server repliziert. Das funktioniert auch einwandfrei.
Ein Prüflauf läuft immer komplett lokal, d.h. Vorgabedaten werden vom Client gelesen und Prüfdaten auf den Client geschrieben und dann (bei Verbindung) auf den Server repliziert.
Die Vorgabedaten (Prüfplan) gelten aber für mehrere Prüfstände und jetzt sehe ich zwei Konzepte um sicherzustellen, dass die Vorgabedaten nicht auf zwei Prüfständen gleichzeitig geändert werden. Diese Daten dürfen nur geändert/erstellt werden wenn eine Verbindung zum Server besteht.
Lösung 1:
Die Vorgabedaten werden direkt auf dem Server erstellt/bearbeitet. Dadurch verhindert MsSQL, dass die Daten zeitgleich von einer anderen Station bearbeitet werden können. Ich muss aber sicherstellen, dass die Daten vor dem Teststart auch auf den Client repliziert wurden. Wie?
Lösung 2:
Auf dem Server liegt eine LockTabelle in der die Datensätze, die gerade bearbeitet werden, als gesperrt gekennzeichnet werden. Die Bearbeitung der Daten erfolgt auf dem Client. Der Lock auf den Datensatz darf dann aber erst entfernt werden, wenn die Daten auf den Server repliziert wurden. Wie?
Welches ist die saubere Lösung? Oder gibt es noch eine weitere Möglichkeit um sicherzustellen, dass Vorgabedaten nur bei bestehnder Server-Verbindung und nur von einer Station zeitgleich bearbeitet werden?
Vielen Dank für euer Feedback
Gerd
ich habe eine replizierte Datenbank für Prüfstände die auch bei nicht vorhandenem Netz sicher laufen müssen. Deshalb ist die DB als Merge-Replikation aufgebaut, d.h. Daten werden im 60s Takt zwischen Prüfstand und Server repliziert. Das funktioniert auch einwandfrei.
Ein Prüflauf läuft immer komplett lokal, d.h. Vorgabedaten werden vom Client gelesen und Prüfdaten auf den Client geschrieben und dann (bei Verbindung) auf den Server repliziert.
Die Vorgabedaten (Prüfplan) gelten aber für mehrere Prüfstände und jetzt sehe ich zwei Konzepte um sicherzustellen, dass die Vorgabedaten nicht auf zwei Prüfständen gleichzeitig geändert werden. Diese Daten dürfen nur geändert/erstellt werden wenn eine Verbindung zum Server besteht.
Lösung 1:
Die Vorgabedaten werden direkt auf dem Server erstellt/bearbeitet. Dadurch verhindert MsSQL, dass die Daten zeitgleich von einer anderen Station bearbeitet werden können. Ich muss aber sicherstellen, dass die Daten vor dem Teststart auch auf den Client repliziert wurden. Wie?
Lösung 2:
Auf dem Server liegt eine LockTabelle in der die Datensätze, die gerade bearbeitet werden, als gesperrt gekennzeichnet werden. Die Bearbeitung der Daten erfolgt auf dem Client. Der Lock auf den Datensatz darf dann aber erst entfernt werden, wenn die Daten auf den Server repliziert wurden. Wie?
Welches ist die saubere Lösung? Oder gibt es noch eine weitere Möglichkeit um sicherzustellen, dass Vorgabedaten nur bei bestehnder Server-Verbindung und nur von einer Station zeitgleich bearbeitet werden?
Vielen Dank für euer Feedback
Gerd