Luze Geschrieben 9. August 2010 Teilen Geschrieben 9. August 2010 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
.NETter Geschrieben 9. August 2010 Teilen Geschrieben 9. August 2010 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Luze Geschrieben 9. August 2010 Autor Teilen Geschrieben 9. August 2010 (bearbeitet) 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 9. August 2010 von Luze Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
.NETter Geschrieben 9. August 2010 Teilen Geschrieben 9. August 2010 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
streffin Geschrieben 11. August 2010 Teilen Geschrieben 11. August 2010 (bearbeitet) 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 (bin aber billiger als ein Consultant ) Gruß Sven Bearbeitet 11. August 2010 von streffin Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
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.