Benutzer mit den meisten Antworten
Tabllen Updaten

Frage
-
Hallo zusammen,
ich habe zwei Datenbanken (DB1 und DB2), die vollkommen identisch sind. Nun werden Daten in die Datenbank 1 (DB1) hinzugefügt. In beiden Datenbanken habe ich die Tabelle Bewohner. DB1 ist immer die aktuelle Datenbank. Nun möchte ich ein Update durchführen. Das heißt, ich möchte die Datenbank DB2 auf den Stand von Datenbank DB1 bringen. Bisher habe ich es wie folgt gelöst.
BEGIN DISTRIBUTED TRANSACTION Delete from DB2.dbo.Bewohner Insert into DB2.dbo.Bewohner select * from DB1.dbo.bewohner COMMIT TRANSACTION
Dies funktioniert auch aber gibt es da nicht eine bessere Variante? Zudem die Frage: Bin ich mit dem BEGIN DISTRBUTED TRANSACTION und COMMIT TRANSACTION davor geschützt, dass wenn jemand z.B. den Netzwerkstecker zieht, dass keinerlei Transfer stattfindet, sondern erst wenn der Befehl abgeschlossen ist alle Daten vorhanden sind?
Oder gibt es vielleicht sogar die Möglichkeit mit wenig Zeilen die komplette Datenbank DB2 auf den Stand der Datenbank DB1 zu bringen?
Mit freundlichen Grüßen
R.K.
Antworten
Alle Antworten
-
Hallo,
1. Frage: Warum 2 DB's? Dies führt grundsätzlich zu redundanten Daten und sollte bei normalisierten DB grundsätzlich verhindert werden.
2. Ich gehe von einem SQL-Server aus: Fällt der Strom aus passiert gar nichts, da bei einer Transaction noch keine Daten in die DB gelangen. Erst wenn die Transaction abgeschlossen wurde, werden die die Daten in der DB gespeichert - Fast. Der Speichervorgang ist weit aus komplexer als man es sich vorstellt. Erst einmal wird alles im Arbeitsspeicher gehalten und zusätzlich im Transaction-File gespeichert. Gibt das System dem Server genug Ressourcen versucht der Server seine Daten zu transformieren. Schlägt das fehl führt der Server automatisch ein Rollback gegen die DB aus.
DB siehe hier mal als die physikalische DB. Dieses Thema ist etwas zu komplex es hier mit 5 Worten zu erklären.
Gruß Scotty
-
2 Datenbanken, da eine lokal auf einem Tablet liegt und die andere auf dem Server....
Jeden Tag müssen die mit dem Tablet aufgenommen Daten übertragen werden in die datenbank auf den server. es wird zudem mit 3 tablets gearbeitet. Das heißt abends ist der aktuelle stand mit allen daten dann immer nur auf dem server.
jeden morgen müssen sich die tablets dann die aktualisierte datenbank ziehen bzw die neuen daten aktualisieren.
-
Hallo,
so trivial wie Du Dir Aufgabe vorstellst ist sie nicht.
Tablet 1 wird um 17:00 Uhr das letzte mal geändert.
Tablet 2 wird um 18:00 Uhr das letzte mal geändert.
Tablet 2 wird um 19:00 Uhr mit dem Server synchronisiert.
Tablet 1 wird um 20:00 Uhr mit dem Server synchronisiert.
Dreimal darfst Du raten welche Daten in der aktuellen DB um 21:00 Uhr stehen?
Was ich damit sagen will, Du darfst nicht einfach Daten "Blind" von A nach B verschieben/ kopieren darfst. Dein Worst-Case ist also nicht ein Stromausfall sondern dass Du aktuellere Daten überschreibst.
Gruß Scotty
-
Hallo Robbo1984,
Hat Dir die Antwort von Bjorn geholfen?
Gruss,
Ionut
Ionut Duma, MICROSOFT
Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip„Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.
-
Hallo Robbo1984,
Ich gehe davon aus, dass die Antwort Dir weitergeholfen hat.
Wenn nicht, neue Rückfragen oder Ergänzungen zu diesem Thread bleiben weiterhin möglich.Danke und viele Grüße,
IonutIonut Duma, MICROSOFT
Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip„Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.