Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Zwei Spalten auf zwei Server vergleichen (https://www.delphipraxis.net/184123-zwei-spalten-auf-zwei-server-vergleichen.html)

joachimd 2. Mär 2015 13:38

AW: Zwei Spalten auf zwei Server vergleichen
 
Falls Du nicht die interne Replikation verwenden willst, bliebe noch der Weg über Trigger: auf jede Tabelle Trigger für INSERT, UPDATE und DELETE und die Aktion in einer Schattentabelle speichern (zB rowversion; modtime; username; tablename; action; recordhash). Ein Programm kann dann zB zu beiden Servern verbinden, diese Schattentabellen vergleichen (ab der zuletzt gespeicherten rowversion) und die Aktionen nachfahren, falls der HASH nicht übereinstimmt.

Edelfix 3. Mär 2015 16:17

AW: Zwei Spalten auf zwei Server vergleichen
 
Erst einmal Danke für die Beiträge!

Es geht mir nicht um das Synchronisieren der Datenbanken.

Ich will nur einmal alle 24h ein Check machen wie eine Art Volkszählung ob alle Datensätze in den Datenbanken synchron sind.

Dazu bilde ich eine art Prüfsumme in dem ich jede Tabelle mit RECCOUNT durchzähle und die Ergebnisse jeder Zählung addieren.

Die beiden Summen aus den beiden DB werden verglichen und wenn sie nicht gleich sind = Alarm Email an Support.

Es funktioniert aktuell aber eben argh langsam und das Abarbeiten nacheinander.

Das Anbinden anderer Datenbanken über "Links" scheitert weil wir "Check User Rights" deaktivieren müssten das aber nicht dürfen.

Danke für die zahlreichen Vorschläge.

@joachimd. Wie ist das mit den Schattentabellen gemeint? Virtuelle Tabellen mit #Tabellenname?
Kann ich mit einer Query die aufgelisteten Informationen (zB rowversion; modtime; username; tablename; action; recordhash) abfragen? Wenn ja wie?

Sir Rufo 3. Mär 2015 19:47

AW: Zwei Spalten auf zwei Server vergleichen
 
Hol dir doch einfach von dem entfernten Server die Daten in ein ClientDataSet, füge diese Daten in eine temporäre Tabelle auf dem lokalen Server ein und dann vergleichst du ganz gemütlich.

Das jetzt mit der PPL noch gemaxht, dann wird es auch einigermassen fix.

Insgsamt laufen da dann 2 Threads parallel:
  • Einer holt die Daten
  • der andere trägt die Daten ein und vergleicht die Daten per SQL-Statement.

joachimd 4. Mär 2015 13:16

AW: Zwei Spalten auf zwei Server vergleichen
 
Zitat:

Zitat von Edelfix (Beitrag 1292234)
@joachimd. Wie ist das mit den Schattentabellen gemeint? Virtuelle Tabellen mit #Tabellenname?
Kann ich mit einer Query die aufgelisteten Informationen (zB rowversion; modtime; username; tablename; action; recordhash) abfragen? Wenn ja wie?

#tabellen stehen nur der aktuellen Verbindung zur Verfügung und werden nach einem Disconnect gelöscht. Ich meine schon eine "echte" Tabelle, welche eben das Log mitführt. Diese kannst du dann ab einem bestimmten Eintrag (ROWVERSION) von deinem Client-Programm lesen und abarbeiten.

rweinzierl 4. Mär 2015 17:01

AW: Zwei Spalten auf zwei Server vergleichen
 
Hallo

Warum ist die aktuelle Lösung langsam ? Ich vermute das es daran liegt das dabei die gesamte Datenbank übers Netz muss. Nocheinmal, wenn ich würde nur einen Hash Wert übertragen und vergleichen

mfg

Reinhold



Zitat:

Zitat von Edelfix (Beitrag 1292234)
Erst einmal Danke für die Beiträge!

Es geht mir nicht um das Synchronisieren der Datenbanken.

Ich will nur einmal alle 24h ein Check machen wie eine Art Volkszählung ob alle Datensätze in den Datenbanken synchron sind.

Dazu bilde ich eine art Prüfsumme in dem ich jede Tabelle mit RECCOUNT durchzähle und die Ergebnisse jeder Zählung addieren.

Die beiden Summen aus den beiden DB werden verglichen und wenn sie nicht gleich sind = Alarm Email an Support.

Es funktioniert aktuell aber eben argh langsam und das Abarbeiten nacheinander.


Edelfix 4. Mär 2015 20:03

AW: Zwei Spalten auf zwei Server vergleichen
 
Ha ja verstehe. Eine Art Auswerte Tabelle auf jedem Server. Dann braucht man nur die beiden Tabellen auf "ungleich" prüfen.

Genau das auf "ungleich" prüfen dauert. Weil wir dazu beide Tabellen (wenn ungleich) aus beiden Dictionaris holen und beide mit eof und next in den beiden querys Daten Satz nach Daten Satz vorhanden vergleichen.

So eine Schleife mit über 10.000 Datnesätzen dauert.

Da wir jetzt erst einmal beide Server gerade gezogen haben kommt es nicht mehr so oft zu ungleichen Tabellen daher ist das Problem nicht mehr akut.

Vielen Dank.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:02 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz