Bedingte Replikation
Axel Hoogestraat
- datenbank
Hallo,
ich habe mal eine Frage zur Replikation mit MS SQL Server und MSDE.
Auf einem Server läuft der SQL-Server und auf diversen Clients läuft eine MSDE. Zwischen diesen wird repliziert.
Jetzt kann es aber sein, dass die Clients ab und zu geupdatet werden müssen. In den Datenbanken existiert jeweils eine Tabelle Version, die in einer Spalte und einem Eintrag die Versionsnummer enthält.
Gibt es nun eine Möglichkeit, bei der MSDE (Merge-Subscribtion) eine Funktion einzubauen, die VOR der Replikation die Versionsnummer aus der eigenen DB mit der Versionsnummer auf dem Server vergleicht und falls die eigene kleiner ist, die Replikation stoppt oder unterbindet?
Evtl geht das mit einem Trigger, den man meines Wissen ja vor einer Replikation ausführen lassen kann. Ich weiß aber nicht, ob die beschriebene Funktion umsetzbar ist und wenn, wie..
Vielen, vielen Dank im Voraus
Schöne Grüße
Axel
Hi,
Gibt es nun eine Möglichkeit, bei der MSDE (Merge-Subscribtion) eine Funktion einzubauen, die VOR der Replikation die Versionsnummer aus der eigenen DB mit der Versionsnummer auf dem Server vergleicht und falls die eigene kleiner ist, die Replikation stoppt oder unterbindet?
eventuell ist das im Replikationskonzept vorgesehene vertikale und horizontale Filtern fuer die geschilderten Zwecke geeignet.
Evtl geht das mit einem Trigger, den man meines Wissen ja vor einer Replikation ausführen lassen kann. Ich weiß aber nicht, ob die beschriebene Funktion umsetzbar ist und wenn, wie..
Ein UPDATE-Trigger?
Gruss,
Ludger
Hallo,
eventuell ist das im Replikationskonzept vorgesehene vertikale und horizontale Filtern fuer die geschilderten Zwecke geeignet.
mmh, ich denke nicht. Soviel, wie ich gelesen habe, dienen die FIlter lediglich dazu, bestimmte Zeilen oder Spalten von der Replikation auszuschliessen. In meinem Fall müsste die Funktion ja schon eine Verbindung zum Server aufbauen, die Versinen vergleichen und dann die Replikatin durchführen oder nicht. Ich denke, das geht um einiges weiter, als die Möglichkeit, die Filter bieten.
Ein UPDATE-Trigger?
Naja. Weiß auch nicht so genau. Ich kenne mich damit nicht so aus. War nur eine Idee. Kann auch sein, dass Trigger damit gar nichts zu tun haben. Ich dachte nur, es gäbe Trigger, die nicht nur vor/nach einem Update, sondern auch vor/nach einer Replikation ausgeführt werden.
Vielen Dank schonmal
Schöne Grüße
Axel
Hi,
Gibt es nun eine Möglichkeit, bei der MSDE (Merge-Subscribtion) eine Funktion einzubauen, die VOR der Replikation die Versionsnummer aus der eigenen DB mit der Versionsnummer auf dem Server vergleicht und falls die eigene kleiner ist, die Replikation stoppt oder unterbindet?
welche Idee steckt dahinter? Geht es Dir um Konfliktbehandlung?
Gruss,
Ludger
Hallo,
die Idee dahinter ist folgende:
Eine Verwaltungssoftware liegt auf einem Server (MS SQL, MS IIS, PHP)
Dort arbeiten mehrere Nutzer ganz normal online drauf.
Wenn die Benutzer allerdings nicht online sind, sondern unterwegs (z.B. beim Kunden) sind, sollen sie das System auch nutzen können.
Dazu läuft auf den Clients eine MSDE, ebenfalls ein IIS und eine Kopie der gesamten PHP-Anwendung.
Falls nun irgendwann mal ein Systemupdate notwendig sein sollte, kann es sein, dass der Server schon geupdatet ist (Sowohl DB-Anpassung als auch PHP-Skripte). Wenn dann der Client ins Netz geht, würde automatisch durch die Replikation die DB-Anpassung auf den Clients passieren. Allerdings arbeitet der Client in dem Fall noch mit den älteren PHP-Skripten, was mit hoher Wahrscheinlichkeit zu Komplikationen führen würde.
Also soll die Versionsnummer der Anwendung in der jeweiligen DB gespeichert sein. Wenn die Client-Version älter ist als die Server-Version soll also die Replikation solange verhindert werden, bis die Clientanwendung geupdatet wurde und somit die Versionsnummern übereinstimmen.
Ich hoffe, ich habe das einigermassen verständlich rübergebracht.
Ich freue mich über weitere Ideen :-)
Vielen Dank nochmal für Deine Hilfe
Schöne Grüße
Axel
Hi,
Eine Verwaltungssoftware liegt auf einem Server (MS SQL, MS IIS, PHP)
Dort arbeiten mehrere Nutzer ganz normal online drauf.
Dir ist klar, dass Du da eine Online-/Offlineloesung am Start hast die wesentlich komplexer ist als eine reine Onlineloesung. (Ich weiss, dass Vertriebsleute auf sowas stehen, aber dennoch finde ich den Aufwand in der heutigen Zeit der Hochverfuegbarkeit des Internets kaum noch angemessen.)
Wenn die Benutzer allerdings nicht online sind, sondern unterwegs (z.B. beim Kunden) sind, sollen sie das System auch nutzen können.
Auch Kunden haben in der Regel Internetzugang. Falls nicht, dann soll der Vertriebsmitarbeiter doch seinen Internetzugang gleich mitbringen.
Dazu läuft auf den Clients eine MSDE, ebenfalls ein IIS und eine Kopie der gesamten PHP-Anwendung.
Bestimmt nicht toll zu warten so ein System.
Falls nun irgendwann mal ein Systemupdate notwendig sein sollte, kann es sein, dass der Server schon geupdatet ist (Sowohl DB-Anpassung als auch PHP-Skripte). Wenn dann der Client ins Netz geht, würde automatisch durch die Replikation die DB-Anpassung auf den Clients passieren. Allerdings arbeitet der Client in dem Fall noch mit den älteren PHP-Skripten, was mit hoher Wahrscheinlichkeit zu Komplikationen führen würde.
Exakt, und die Replikation schert sich einen Dreck um die auf dem Client laufende PHP-Applikation. Und nun moechtest Du die Aktuialisierung der "Clientdaten" an die Versionierung des PHP-Clients binden. Da koenntest Du natuerlich mit einer selbstgeschriebenen und verwalteten Replikation kommen. ;-)
Oder Du bringst PHP dazu den Pull-Agent auf dem Notebook zu stoppen, wenn die Version des PHP-Clients nicht mehr up to date ist?
Gruss,
Ludger