Delphi-PRAXiS
Seite 1 von 2  1 2      

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)

Edelfix 27. Feb 2015 18:02

Datenbank: ADS • Version: 11.9 • Zugriff über: Delphi XE7

Zwei Spalten auf zwei Server vergleichen
 
Hallo,

es geht um ein Überwachung Tool. Wir versuchen zwei Advantage Database Server die an verschiedenen Orten stehen über VPN synchron zu halten.
Leider gibt es immer wieder Abweichungen. Um das zu überwachen möchten wir ein Überwachung Tool jede Nacht laufen lassen das per Email meldet wenn die Datenbanken nicht gleich sind.

Ich hatte mir gedacht das ich mit einer Query die Spalte mit den ID´s aus der ersten Datenbank hole und mit einer zweiten Query dasselbe aus der anderen Datenbank.

Danach beide Ergebnisse mit einer while Query.eof Schleife vergleiche.

Da es aber über 10.000 Einträge sind dauert das lange und es sind viele Tabellen.

Hat jemand eine Idee wie man das beschleunigen oder geschickter anstellen kann?

So etwas wie zwischen speichern und mit einer dritten Query und Where Filter nur die Abweichungen auslesen oder so etwas...
Weil es unterschiedliche Server sind brauche ich auch zwei verschiedene Server Verbindungen. Deswegen geht UNION leider nicht.

Bin für Vorschläge dankbar.

himitsu 27. Feb 2015 18:19

AW: Zwei Spalten auf zwei Server vergleichen
 
Zitat:

Deswegen geht UNION leider nicht.
Einige DBMS bieten es an, daß man intern Links, für z.B. Selects, zu anderen Datenbanken auf machen kann ... dann könntest du in einer DB eine StoredProc schreiben, welche die eigenen Daten läd, dazu sich die Daten von der anderen DB und das dann intern vergleicht. (50% weniger traffic und innerhalb der DB sind die eigenen Daten auch schneller geladen)

Edelfix 27. Feb 2015 18:30

AW: Zwei Spalten auf zwei Server vergleichen
 
Wow! Das ging schnell. Ein Forum das wie ein Chatraum funktioniert. :-D

Mit dem Advantage Database Architekten (bei liegende Verwaltunssoftware) kann man tatsächlich über "Links" weitere Datenbanken anhängen.
Funktioniert leider nicht mit Datenbanken die über eine IP Adresse, Port, Username, Passwort verbunden werden müssen.
Oder wir haben dabei was falsch gemacht.
Als neue Dictionary Connection können wir den externen Remote Server als neue Datenbank einrichten und connecten aber über "Links" an eine local existierende DB anhängen klappt leider nicht.

Danke für den Vorschlag.

himitsu 27. Feb 2015 20:49

AW: Zwei Spalten auf zwei Server vergleichen
 
Wie das mit den Links genau funktionier, da kann ich nicht helfen.

Aber wenn es nur an der IP liegt, dann könntet ihr es eventuell via VPN erledigen, also ein Tunnel zum anderen Server und die DB ist dann lokal über einen Port erreichbar.

Edelfix 28. Feb 2015 09:18

AW: Zwei Spalten auf zwei Server vergleichen
 
Ein auszug aus der Hilfe:

Advantage Data Dictionaries can be linked so that tables from multiple databases may be queried in the same SQL statement. The links are created using either the AdsDDCreateLink API in ACE or the sp_CreateLink stored procedure in SQL.

For example, suppose a link named DB2 is created in the database A to reference database B, a connection made to database A can then reference the tables in database B using the dot notation – "SELECT * FROM DB2.table1".

Tables in the linked data dictionary can be used in an SQL statement but they cannot be opened directly using the ACE API. However, this limitation can be worked around by defining a view that references the linked table. For example, given the same set up as the previous example, a view named "DB2_TABLE1" may be defined as "SELECT * FROM DB2.table1". The view DB2_TABLE1 can be opened directly using the ACE API and all of the navigational commands will be available on this view. The only limitation is that the table cannot be opened exclusively and commands that require exclusive access to the table are not available.

Das würde heissen daß es wohl schon der richtige Weg ist. Der zweite Server ist über VPN verbunden.
Da es bis jetzt bei jedem Versuch den externen Server so zu verbinden zur Fehlemeldungen kamm dachte ich das es generell nicht geht.

Ich muss Montag noch einmal die Fehlermeldungen genauer betrachten.

RSF 1. Mär 2015 14:29

AW: Zwei Spalten auf zwei Server vergleichen
 
Soweit ich ADS kenne gibt es zum Zweck der Synchronisation die Möglichkeit der Replikation.
http://devzone.advantagedatabase.com..._scenarios.htm

Sir Rufo 1. Mär 2015 16:23

AW: Zwei Spalten auf zwei Server vergleichen
 
Zitat:

Zitat von RSF (Beitrag 1291916)
Soweit ich ADS kenne gibt es zum Zweck der Synchronisation die Möglichkeit der Replikation.
http://devzone.advantagedatabase.com..._scenarios.htm

Ich hätte jetzt gedacht, dass das schon eingesetzt wird und es dabei zu Problemen kommt ... :stupid:

rweinzierl 1. Mär 2015 18:09

AW: Zwei Spalten auf zwei Server vergleichen
 
Hallo

Keine Ahnung ob das hilft aber ich würde als erstes auf beiden servern die Daten jeder Tabelle in eine Text Datei schreiben und mir einen Hash Wert erstellen lassen ==> Das kann super simple vergleichen .

mfg

Reinhold

RSF 1. Mär 2015 18:14

AW: Zwei Spalten auf zwei Server vergleichen
 
Zitat:

Zitat von Sir Rufo (Beitrag 1291926)
Zitat:

Zitat von RSF (Beitrag 1291916)
Soweit ich ADS kenne gibt es zum Zweck der Synchronisation die Möglichkeit der Replikation.
http://devzone.advantagedatabase.com..._scenarios.htm

Ich hätte jetzt gedacht, dass das schon eingesetzt wird und es dabei zu Problemen kommt ... :stupid:

Also stellt sich die Frage:
Wie (mit was) Synchronisiert ihr die zwei Datenbanken.
?

Union 1. Mär 2015 18:56

AW: Zwei Spalten auf zwei Server vergleichen
 
Zitat:

Zitat von Edelfix (Beitrag 1291841)
Advantage Data Dictionaries can be linked so that tables from multiple databases may be queried in the same SQL statement. The links are created using either the AdsDDCreateLink API in ACE or the sp_CreateLink stored procedure in SQL.

Das würde heissen daß es wohl schon der richtige Weg ist.

Nein, das ist es nicht. Dort steht nur "multiple Databases". Das funktioniert nur wenn diese von der selben ADS Instanz verwaltet werden.


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

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