Daten zwischen zwei Servern vergleichen

10/11/2008 - 09:57 von Markus Renezeder | Report spam
Hallo Leute,

ich hab (schon) wieder eine Frage.

Ich hab zwei Server auf denen die gleiche Datenbank liegt. Ich möchte jetzt
eine Tabelle, die auf beiden Servern liegt, vergleichen. Kann ich das per
SQL machen?

Irgendwie so vielleicht:

SELECT * FROM Tabelle WHERE Server1.Tabelle.ID = Server2.Tabelle.ID AND
Server1.Tabelle.TimeStamp <> Server2.Tabelle.TimeStamp

Danke Markus
 

Lesen sie die antworten

#1 Elmar Boye
10/11/2008 - 10:14 | Warnen spam
Hallo Markus,

"Markus Renezeder" schrieb ...
Ich hab zwei Server auf denen die gleiche Datenbank liegt. Ich möchte jetzt eine Tabelle, die auf beiden Servern liegt,
vergleichen. Kann ich das per SQL machen?



Das kannst Du in dem Du den jeweils anderen Server als Verbindungsserver
einrichtest. Am einfachten geht das über Management Studio.

Irgendwie so vielleicht:

SELECT * FROM Tabelle WHERE Server1.Tabelle.ID = Server2.Tabelle.ID AND Server1.Tabelle.TimeStamp <> Server2.Tabelle.TimeStamp



Das vergleichen von TimeStamps wird allerdings nicht ausreichen, da jede Datenbank
ihre Timestamp Werte selbst verwaltet. Und selbst wenn beide ursprünglich aus der
gleichen Quelle stammen, so differieren diese Werte schnell.
Und auch wenn TimeStamp für eine DateTime Spalte steht, reicht eine
kleine Abweichung der Uhrzeit aus.

Für einen Vergleich mußt Du deshalb jede Spalte heranziehen, also in etwa:

SELECT t1.*
FROM dbo.Tabelle AS t1 -- lokale Tabelle
INNER JOIN AndererServer.Datenbank.dbo.Tabelle AS t2 -- Verbindungssserver
WHERE t1.id = t2.id
AND (t1.Spalte1 <> t2.Spalte2
OR t1.Spalte2 <> t2. Spalte2
OR ...)

Wenn Du die Anweisung für einen Abgleich benötigst, wàre ein alternativer Ansatz,
das tablediff Dienstprogramm zu verwenden:
http://msdn.microsoft.com/de-de/lib...62843.aspx

Gruß Elmar

Ähnliche fragen