Replizierung per Script ausschalten?

  • Hallo!


    Ich hätte da mal wieder ein kleines Problemchen.
    Und zwar versuche ich, per Script die Replizierung des persönlichen Adressbuches des aktuellen Users auszuschalten.


    Ich habe dazu ein Script gebastelt, dass ich per Mail mit Schaltfläche verschicken wollte.


    Code
    Sub Click(Source As Button)
    	Dim db As New NotesDatabase ("","names.nsf")
    	Dim rep As NotesReplication
    	Set rep = db.ReplicationInfo
    	Msgbox rep.Disabled
    	If Not rep.Disabled Then
    		rep.Disabled = True
    	End If
    	Call rep.Save()
    End Sub


    Soweit ich erkennen kann macht das Script auch was es soll. (Ist ja auch an ein Beispiel aus der Notes-Hilfe angelehnt.) Nur zeigt es keine Auswirkungen.


    Soll heißen: Der entsprechende Parameter im Objekt NotesReplication wird wie gewünscht geändert. Das kann man auch kontrollieren, wenn man das Script mehrfach aufruft. Ich habe das Script auch mal in einen Agenten gesetzt und den Debug-Modus verwendet. Da sieht man auch das der Parameter geändert und gespeichert wird.
    In der Replizier-Übersicht im Notes Client bleibt der Haken bei "aktiviert" aber drin. Auch ein Blick in die Serverkonsole zeigt, dass weiterhin repliziert wird.


    Hat jemand eine Idee, warum sich der Parameter nicht auswirkt?
    Und wie ich die Replizierung abschalten kann. Vielleicht gibt's ja auch noch eine bessere Idee, als jedem User eine Mail zu schicken.


    Vielen Dank schon mal!


    Oli

  • Du verwechselst da zwei Dinge:


    Die Option die du damit ein-/ausschaltest ist die in den Repliziereigenschaften. Mit der Anzeige auf der replikatorseite hat das absolut nichts zu tun.
    Und sobald der Client die Änderung mitbekommen hat wird er dir auf der Replikatorseite die Fehlermeldung geben, daß die Replizierung für die DB deaktiviert ist

  • Hallo taurec!


    Vielen Dank für Deine Antwort.
    Verwechselt ist nicht ganz richtig. Vielmehr war mir gar nicht klar, dass es da zwei verschiedene Punkte gibt.


    Ich habe mir die verschiedenen Optionen auf der Replizierseite noch mal durchgesehen und habe da jetzt einen Punkt "Replizierung dieser Replik vorübergehend deaktivieren" gefunden. Diesen Punkt scheint mein Script zu verändern. (Immerhin! :D ).
    In der Designer-Hilfe steht leider nichts davon, dass dies temporär sein soll bzw. nur eine bestimmte Replik betreffen soll.


    Irgendwie ist mir auch nicht klar, was diese Option bewirkt, denn anscheinend wird ja trotzdem weiterhin versucht zu replizieren.


    Unser Problem ist, dass für einige User das Replizieren des Adressbuches mit einem Server angelegt ist, auf den sie keinen Zugriff haben. (Frag mich nicht warum, ich bin hier nur der Programmierer und nicht der Admin.) Insofern bringt das Replizieren halt nichts außer Server- und Netzwerklast. Ich soll daher ein Script liefern, was das Replizieren der Datenbank abschaltet. Bei der Klasse NotesReplicationEntry gibt es die Methode remove, aber löschen soll ich die Replizierung nicht, solange sie noch aktiv ist. Und einen einzelnen NotesReplicationEntry kann ich anscheinend auch nicht deaktivieren.


    Wie kriege ich das Problem denn jetzt am besten gelöst? Anscheinend lässt sich die Replizierung ja doch nicht so einfach abschalten.


    Viele Grüße,


    Oli

  • Wenn du lokal die Replizierung temporär deaktivierst, dann wird zwar versucht zu replizieren, aber der lokale Replikator erkennt bereits, daß es nicht erlaubt ist und baut damit gar keine Verbindung mehr zum Server auf ==> Also keine Netzwerklast.


    Den Eintrag in der Replikatorseite bekommst du mit Bordmitteln nicht weg

  • Zitat


    taurec schrieb:
    Wenn du lokal die Replizierung temporär deaktivierst, dann wird zwar versucht zu replizieren, aber der lokale Replikator erkennt bereits, daß es nicht erlaubt ist und baut damit gar keine Verbindung mehr zum Server auf ==> Also keine Netzwerklast.


    Hmm. Ich weiß nicht, ob wir vielleicht immer noch von verschiedenen Einstellungen reden.


    Also ich bin in meinem Client 8.5 auf die Replizierseite gegangen und habe dort unter dem Punkt "Andere" den oben erwähnten Punkt gefunden, mit dem man die Replizierung temporär deaktivieren kann. Und unter temporär verstehe ich jetzt, solange der Haken bei diesem Punkt gesetzt ist.


    Trotz gesetztem Haken wird aber der Replizierversuch in der Server-Konsole angezeigt. Und genau das sollte ja eigentlich nicht der Fall sein.


    Immerhin: Erfahrung kriegt man immer dann, wenn man nicht das kriegt, was man wollte. :-o



    CU,


    Oli

  • Ihr redet von 2 verschiedenen Dingen: du redest von der Replicator Page, taurec von den Repliziereinstellungen in der jeweiligen DB selbst. Und wie taurec schon sagte: beides ist unabhängig voneinander zu sehen.

    Life is not a journey to the grave with the intention of arriving safely in a pretty and well-preserved body, but rather to skid in broadside, thoroughly used up, totally worn out, and loudly proclaiming "Wow, what a ride!!! :evil:
    Beschleunigung ist, wenn die Tränen der Ergriffenheit waagrecht zum Ohr hin abfliessen - Walter Röhrl

  • Hallo RockWilder,


    sorry, da habe ich mich vielleicht missverständlich ausgedrückt.


    Ich bin auf die Replizierseite und dort dann in die "Anwendungsspezifische Optionen". Da komme ich dann auf eine Konfig-Seite und die sieht für mich genauso aus, als wenn ich in der Konfig-Seite eine Datenbank mit der rechten Maustaste anklicke und auf "Optionen..." gehe oder wenn ich direkt bei einer Datenbank auf "Replizierung" / "Optionen für diese Anwendung..." gehe.
    Die drei Wege sind doch identisch, oder?
    Und in diesen Optionen gibt es auf dem Reiter "Andere" den Punkt "Replizierung diesser Replik vorübergehend deaktivieren". Dort wirkt sich mein Script auf die Einstellung aus. In der Praxis zeigt dies aber leider keine Wirkung. Auf dem Server laufen weiterhin die Replizieranfragen auf und werden dort abgelehnt. Genau das soll verhindert werden.


    Bisher hatten wir Erfolg, wenn wir auf der Replizierseite direkt bei der betreffenden Datenbank den Haken bei "Aktiviert" manuell rausgenommen haben. Aber wenn ich taurec richtig verstanden habe ist das per Script nicht zu bewerkstelligen.


    Viele Grüße,


    Oli

  • Hi,


    Dennoch bewegts Du Dich in beiden Faellen, wie Du den Optionen-Dialog aufgerufen hast auf Ebene der Datenbank und NICHT auf der Ebene der Replikator-Seite.


    Die Replikator-Seite ist eine lokale Geschichte des Clients.
    Und hier, wie taurec bereits schrieb, hast Du mit Bordmitteln wenig Moeglichkeiten, diesen per Script auszuschalten bzw. zu loeschen.


    Bei aktivierter lokaler periodischer Replikation prueft der Client die Replikator-Seite, welche Dbs sind hier aufgelistet und bei welchen ist der Haken gesetzt, dass eine Replikation durchgefuehrt werden soll.
    Da der Haken bei Deiner Db gesetzt ist, hat wie gesagt, NICHTS in den Optionen in der Db zu tun, wird eine Replikation versucht.



    Andreas

  • Hallo Andreas!


    Zitat


    ascabg schrieb:
    Dennoch bewegts Du Dich in beiden Faellen, wie Du den Optionen-Dialog aufgerufen hast auf Ebene der Datenbank und NICHT auf der Ebene der Replikator-Seite.


    Das ist mir schon klar.


    Zitat

    Die Replikator-Seite ist eine lokale Geschichte des Clients.
    Und hier, wie taurec bereits schrieb, hast Du mit Bordmitteln wenig Moeglichkeiten, diesen per Script auszuschalten bzw. zu loeschen.


    Auch das ist klar.


    Zitat

    Bei aktivierter lokaler periodischer Replikation prueft der Client die Replikator-Seite, welche Dbs sind hier aufgelistet und bei welchen ist der Haken gesetzt, dass eine Replikation durchgefuehrt werden soll.
    Da der Haken bei Deiner Db gesetzt ist, hat wie gesagt, NICHTS in den Optionen in der Db zu tun, wird eine Replikation versucht.


    Den Haken auf der Replizierseite kann ich per Script nicht verändern. Soweit habe ich das verstanden.
    Aber in den Datenbank-Optionen gibt es doch den Punkt "Replizierung dieser Replik vorübergehend deaktivieren".
    Und hier kann ich per Script einen Haken setzen.
    Nur: Was bewirkt diese Einstellung, wenn ich damit nicht die Replizierung für die Datenbank steuern kann?


    Hoffentlich kapiere ich das Ganze noch irgendwann,


    Oli

  • Doch Du steuerst in gewissem Sinne die Replikation der Datenbank damit, nur nicht den Replikator.


    Der Replikator geht ueber alle Datenbanken und will diese auch replizieren.
    Nun hast Du in den Optionen die Replikation "voruebergehend", also nur zeitweise, quasi ausgeschaltet.
    Die merkt der Replikator auch, jedoch schreibt er ins das Log die Meldung, dass die Replikation der Db deaktiviert ist/wurde.


    Diese Meldung ist einzig und allein eine Infomeldung fuer die Admins.
    Es koennte ja sein, dass beim Deaktivieren der Replikation einer Db ein Fehler aufgetreten ist, und man die falsche Db erwischt hat.



    Andreas

  • Hallo Andreas!


    Zitat


    ascabg schrieb:
    Der Replikator geht ueber alle Datenbanken und will diese auch replizieren.
    Nun hast Du in den Optionen die Replikation "voruebergehend", also nur zeitweise, quasi ausgeschaltet.
    Die merkt der Replikator auch, jedoch schreibt er ins das Log die Meldung, dass die Replikation der Db deaktiviert ist/wurde.


    Wenn das so wäre, dann wäre ich ja zufrieden.


    Du meinst doch das Replizier-Log der jeweiligen Datenbank, oder?
    Da stehen bei mir nur erfolgreiche Replizierungen. (Bei der betroffenen Datenbank im Beispiel eine Replizierung von 2006)


    Oder meinst Du die Spalte "Zusammenfassung" auf der Replizierseite? Da steht, dass ich nicht berechtigt bin, den Server zu benutzen. (Deswegen soll die Replizierung ja abgeschaltet werden.) Da steht aber nicht, dass die Replizierung vorübergehend deaktiviert ist.


    In der Konsole auf dem Server sieht man auch, dass der Replizierprozess versucht die Datenbank zu replizieren, was aber dann abgewiesen wird. Wenn ich im Client auf der Replizierseite manuell das Kreuzchen bei "Aktiviert" rausnehme taucht die Replizieranfrage auf dem Server nicht mehr auf. Aber das kann ich ja wieder nicht per Script erledigen.


    CU,


    Oli

  • Hallo Oli,


    Habe ich da etwas ueberlesen?

    Zitat

    Da steht, dass ich nicht berechtigt bin, den Server zu benutzen


    Hier prallen wohl ein paar Prioritaeten der Meldungen aufeinander.


    Wenn der Replikator versucht mit einer Db zu replizieren, muss er dies auch mit einer Db auf dem Server tun.
    Nun wird natuerlich zuerst geprueft, ob der User, in dem Fall Du, ueberhaupt auf den Server zugreifen darfst.
    Ist dies nicht der Fall => entsprechender Fehler
    Ist das der Fall => Suche Replik auf dem Server
    Wenn nicht gefunden => entsprechende Meldung
    Wenn gefunden => pruefe, ob Replikation ausgeschaltet (dein Script)
    Wenn ausgeschaltet => entsprechende Meldung
    Wenn nicht => dann repliziere.


    Und der Replikator geht ueber alle Dbs auf der Replikatorseite. Das ob geschilderte verhalten verwendet er dann fuer alle aufgelisteten Datenbanken, die als zu replizieren gekennzeichnet sind. (Haken vor dem Eintrag auf der Replikatorseite)


    Andreas

  • Hallo Andreas!



    Die fehlende Berechtigung ist ja der Grund, warum die Replizierung abgeschaltet werden soll. Wegen der fehlenden Berechtigung wird hier nur Server- und Netzwerklast produziert, ohne das es was bringt.


    Die Admins können mir auch nicht sagen, woher diese Replizierung überhaupt kommt... Die Replik soll aber nicht gelöscht werden. Und auch das NotesReplicationEntry soll ich nicht löschen, solange die Replizierung noch aktiv ist.


    Deswegen die Idee mit dem Abschalten der Replizierung. Ich frage jetzt nicht, warum Notes zuerst prüft, ob es eine Replik auf dem Server gibt und es zum Zugriff berechtigt ist und es dann erst untersucht, ob die Replizierung vielleicht vorübergehend abgeschaltet ist und es gar nicht replizieren muss (vielleicht macht Notes das um möglichst zeitgenau auf die Deaktivierung reagieren zu können) ... ich kann mir aber durchaus vorstellen, dass Notes das so handhabt.


    Wenn wir also davon ausgehen, dass die von Dir beschriebene Reihenfolge korrekt ist, dann kann das temporäre Abschalten der Replizierung gar nichts bringen.
    Insofern bedanke ich mich für die Hilfestellung, die ich von allen hier gekriegt habe und schließe das Thema mal.


    Viele Grüße,


    Oli