Zum Inhalt springen

Synchronisation SQL Server 2000


Luze

Empfohlene Beiträge

Hallo,

ich habe schon die Sufu genutzt, aber leider zu meinem Problem nichts gefunden.

Folgendes:

Ich soll ein Programm in VB.NET schreiben, welches bestimmte Tabellen von zwei MS SQL Server 2000 SP4 synchronisiert. Die Server stehen an unterschiedlichen Standorten und sind über VPN miteinander verbunden.

Ich habe mir schon das Sync Framework von MS angesehen, aber eine vernünftige Erklärung hab ich noch nicht gefunden.

Ich hoffe, dass mir hier jemand helfen kann.

Danke schonmal im voraus.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

was soll genau passieren? Sollen alle Daten von Server1.DeineTabelle nach Server2.DeineTabelle repliziert werden? Also Insert, Update und Delete?

Soll eine Replikation nur in eine Richtung erfolgen? Also nur von Server1 nach Server2 ?

Anstatt des Sync Frameworks "könnte" man auch einfache SQL Statements absetzen.

Hier würde man auf Server1 einen Verbindungsserver (Server2) einrichten.

Dann lassen sich die Tabellen auf den verschiedenen Servern in der Syntax

SELECT * FROM Server1.DBName.MeineTabelle t1

LEFT JOIN  Server2..DBName.MeineTabelle t2

ON t1.id = t2.id

WHERE t2.id IS NULL

So hat man dann "neue" Datensätze die in der Tabelle auf Server2 noch nicht enthalten sind und kann diese dann mittels SQL Statement In die zweite Tabelle einfügen.

Ebenso kann man es mit dem DELETE und UPDATE halten.

Gruß,

Thomas

Link zu diesem Kommentar
Auf anderen Seiten teilen

also es soll eine bidirektionale Synchronisation von Tabellen stattfinden, die festgelegt werden. Sprich ändert sich in Standort A etwas, soll dies auch nach Standort B übertragen werden. Und zwar sind mit Änderungen nicht nur neue Daten einfügen oder Daten löschen gemeitn, sondern auch evtl bearbeitete Tabllenschemata etc.

Andersrum, wird in Standort B etwas geändert, soll diese Änderung auch nach Standort A. So dass also die Tabellen immer auch demselben Stand sind. Achso und es soll natürlich möglichst wenig Traffic entstehen, weshalb man also löschen und neukreieren von Tabellen ausschließen kann, da die Anzahl der Datensätze von einigen hunderttausend bis zu 2 mio variiert, je nach Tabelle.

Bearbeitet von Luze
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

das könnte ein schwieriges Unterfangen werden.

Daten von beiden Seiten (also von A nach B und von B nach A) zu replizieren ist nicht das wirkliche Problem (siehe Mergereplikation).

Hierbei wird vom SQL Server selbst allerdings das Schema der Datenbank geändert.

Ein Schema einer Tabelle etc. beidseitig zu replizieren ist mit Bordmitteln meines Wissens nach nicht möglich.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Das ganze hat mit .Net nicht viel zu schaffen.

Relevant ist hier um was für eine Datenbank es sich handelt.

Änderungen am Schema, das kann ich dir aber garantieren, dass wird nicht mit Standart Funktionen machbar sein.

Da kommen mer in die höhrere Kunst von SQL, was heist dynamische SQL Querys erstellen. Ich denke du wirst hier auch um dynamisches SQL nicht rum Kommen. Machbar ist das, die alter Table statements kannst du dir bei Bedarf schon erstellen, um die Tabellen in beiden Datenbanken zu synchronisieren.

Ich persöhnlich würde sowas NUR im Backend per Stored Procedure implementieren ehrlich gesagt, aber das kannst du auch per .Net reinfeuern im Prinzip.

Gerade, dass ich rauslesen kann, dass das ganze nicht auf eine bestimmte Tabelle beschränkt, sonder allgemeingültig funktionieren schreit hier nach einer SP die ausliest wie eine Tabelle aufgebaut ist, nachschaut ob es die Tabelle auf dem anderen Server gibt, wenn nicht, erstellt, wenn ja angleicht.

Das Problem das du aber hast, wenn du von bidirektional redest, wenn du eine Spalte löschst in einer Tabelle, dann musst irgendwo hinterlegt haben, was deine Master Tabelle ist. Weil hinzufügen ist einfach, das geht. Aber Unterscheiden Zwischen

"Ich habe in Tabelle A eine Spalte hinzugefügt, die es in Tabelle B noch nicht gibt, leg die Spalte in Tabelle B an"

und

"Ich habe in Tabelle A eine Spalte gelöscht, die es auch in Tabelle B gibt, lösch die Spalte in Tabelle B"

Ist nicht machbar. Du kannst in beiden Tabellen die fehlenden Spalten hinzufügen, aber wenn du eine Spalte löschst, dann musst du schon irgendwo sagen, "nein die Spalte fehlt nicht in Tabelle A, ich hab sie gelöscht, lösch die Spalte in Tabelle B auch".

Das ist auf jedenfall was komplexres, das sehr gut getestet werden möchte, und wo deine Kollegen eine Dokumentation mit sehr grosser sicherheit nicht ablehnen würden.

Ich jedenfalls schreib dir dat für umme ganz bestimmt nicht :P

(bin aber billiger als ein Consultant :P)

Gruß

Sven

Bearbeitet von streffin
Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...