Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Synchronisation SQL Server 2000

Empfohlene Antworten

Veröffentlicht

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.

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

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

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.

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

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.