Autor Thema: Automatische Replikerstellung  (Gelesen 2753 mal)

Offline Friese

  • Frischling
  • *
  • Beiträge: 41
  • Geschlecht: Männlich
  • Wo kann man günstig ne Datenbank hosten?
Automatische Replikerstellung
« am: 02.08.02 - 12:18:45 »
Moin Moin!

Ich hab´ da mal eine Frage:

Um automatisch eine Replik zu erstellen, bietet Notes ja im Script eine Möglichkeit. Ich kann sagen: Erstelle mir von Datenbank x auf Server y eine Replik.

Ich möchte diese Replik aber nur als nackte Datenbank, so daß erst bei der nächsten Replikation (sei es manuell oder zeitlich) diese Datenbanken abgeglichen werden.

Kann mir da einer helfen? Es würde nämlich zu lange dauern, wenn ich zum Beispiel 5 Datenbanken hätte und alle ziemlich groß sind.

Vielen Dank schon mal im voraus.

Gruß aus Friesland
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »

Offline lrzwkle

  • Frischling
  • *
  • Beiträge: 34
  • Geschlecht: Männlich
  • wer früher stirbt ist länger tot
Re: Automatische Replikerstellung
« Antwort #1 am: 02.08.02 - 13:00:13 »
Servus,

ich würde es so machen:
Ich würde eine lokale Replik der Datenbank erstellen.
In dieser lokalen Replik würde ich dann alle Dokumente löschen.
Auf Basis dieser leeren Datenbank würde ich mittels eines kleinen Agents die benötigten Repliken auf den betroffenen Servern erstellen.
Bei der nächsten Replikation werden - sofern in den Verbindungsdokumenten vorgesehen - die Repliken mit Daten gefüllt.
Die leere lokale Replik kannst Du dann wieder löschen.

Ciao, Siegi
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »
Systeme:
Notes 4.6 bis R5.05 und Domino 4.6.7 bis R5.07a
Ca. 5000 User auf ca. 300 Servern (bin aber gottseidank kein Administrator ;-) )

Offline Friese

  • Frischling
  • *
  • Beiträge: 41
  • Geschlecht: Männlich
  • Wo kann man günstig ne Datenbank hosten?
Re: Automatische Replikerstellung
« Antwort #2 am: 02.08.02 - 13:07:51 »
und das alles im script unterbringen? *grübel* Erstelle Datenbank (lokal), lösche alle Dokumente (lokal), davon Replik anlegen (auf Server)....

Hmmmmm

Versuch macht kluch

Gruß
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »

Offline Friese

  • Frischling
  • *
  • Beiträge: 41
  • Geschlecht: Männlich
  • Wo kann man günstig ne Datenbank hosten?
Re: Automatische Replikerstellung
« Antwort #3 am: 02.08.02 - 13:16:34 »
Moin Moin!

Wollte grad anfangen, aber ich kann mir nicht vorstellen, daß diese drei Schritte wesentlich schneller sind als der eine (s.o.), zumal ja noch eine richtige Replik lokal angelegt wird *wart*

Hat noch jemand eine Idee?

Gruß
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »

Offline Zimmi

  • Aktives Mitglied
  • ***
  • Beiträge: 166
  • Geschlecht: Männlich
  • I love YaBB 1G - SP1!
Re: Automatische Replikerstellung
« Antwort #4 am: 02.08.02 - 14:35:17 »
Hallo,

versuch's mal folgendermaßen:

Starte manuell eine Replikation bis diese 5 bis 10 % fortgeschritten ist. Dann abbrechen und an der Server-Console den Task "replicate ..." abrufen, geht sehr schnell.
So machen wir das, wenn wir User mit großen Mailfiles umziehen.

Jimmi
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »

Offline HaPe

  • Junior Mitglied
  • **
  • Beiträge: 81
  • Geschlecht: Männlich
  • Geht net, gibts net ...
    • Mein kleine Seite
Re: Automatische Replikerstellung
« Antwort #5 am: 07.08.02 - 15:38:30 »
Hi,

ich hab das Problem auch gerade gehabt und eine Lösung gefunden. Hier die fertige Funktion:

'Declarations:
'For CreateEmptyReplica
Type TIMEDATE
     Innards(1) As Long
End Type
Type DBREPLICAINFO
     ID As TIMEDATE
     Flags As Integer
     CutoffInterval As Integer
     Cutoff As TIMEDATE
End Type
Declare Function W32NSFDbReplicaInfoGet Lib "nnotes" Alias "NSFDbReplicaInfoGet" ( Byval hDb As Long, ReplicationInfo As DBREPLICAINFO ) As Integer
Declare Function W32NSFDbReplicaInfoSet Lib "nnotes" Alias "NSFDbReplicaInfoSet" ( Byval hDb As Long, ReplicationInfo As DBREPLICAINFO ) As Integer
Declare Function W32NSFDbOpen Lib "nnotes" Alias "NSFDbOpen" ( Byval PathName As Lmbcs String, rethDb As Long ) As Integer
Declare Function W32NSFDbClose Lib "nnotes" Alias "NSFDbClose" ( Byval hDb As Long ) As Integer
Declare Function W32OSLoadString Lib "nnotes" Alias "OSLoadString" ( Byval hModule As Long, Byval StringCode As Integer, Byval retBuffer As Lmbcs String, Byval BufferLength As Integer ) As Integer
Const NULLHANDLE = 0&
Const NOERROR = 0
Const PKG_NSF = &H200
Const ERR_NOT_NSF = PKG_NSF + 1
Const ERR_NSF_VERSION = PKG_NSF + 25
Const REPLFLG_HIDDEN_DESIGN = &H00 ' &H20 Hide , &H00 Unhide.

Sub CreateEmptyReplica( strSrSrv As String, strSrNa As String, strDeSrv As String, strDeNa As String)
     
     Dim dbSr As New NotesDatabase(strSrSrv,strSrNa)
     Dim dbDes As NotesDatabase
     Dim hDbSr As Long
     Dim hDbDe As Long
     Dim dbRepInfo As DBREPLICAINFO
     Dim iStatus As Integer
     Dim sErrMsg As String
     Dim sBuffer As String
     Dim strTmp As String
     
     'Create empty copy of DB
     Call dbSr.CreateCopy(strDeSrv,strDeNa)
     
     'Copy Replica info to make it a replica
     sBuffer = String$(256, 0)
     'Open Source DB
     If strSrSrv="" Then
           strTmp=strSrNa
     Else
           strTmp=strSrSrv+"!!"+strSrNa      
     End If
     iStatus = W32NSFDbOpen(strTmp, hDbSr) 'Source Server and database name
     If iStatus <> NOERROR Then
           Select Case iStatus
           Case ERR_NOT_NSF
                 sErrMsg = "No NSF File"
           Case ERR_NSF_VERSION
                 sErrMsg = "Version NSF Invalide"
           Case Else
                 sErrMsg = GetCAPIErrorMsg(iStatus)
           End Select
           Msgbox sErrMsg, 48, "Error in API C"
           Exit Sub
     End If
     'Open Destination DB
     If strDeSrv="" Then
           strTmp=strDeNa
     Else
           strTmp=strDeSrv+"!!"+strDeNa      
     End If
     iStatus = W32NSFDbOpen(strTmp, hDbDe) 'Destination Server and database name
     If iStatus <> NOERROR Then
           Select Case iStatus
           Case ERR_NOT_NSF
                 sErrMsg = "No NSF File"
           Case ERR_NSF_VERSION
                 sErrMsg = "Version NSF Invalide"
           Case Else
                 sErrMsg = GetCAPIErrorMsg(iStatus)
           End Select
           Msgbox sErrMsg, 48, "Error in API C"
           Exit Sub
     End If
     'Read Source Replica Info
     iStatus = W32NSFDbReplicaInfoGet(hDbSr, dbRepInfo)
     If iStatus <> NOERROR Then
           Msgbox GetCAPIErrorMsg(iStatus), 48, "Error in API C"
           Exit Sub
     End If
     'Write Dest. Replica Info
     iStatus = W32NSFDbReplicaInfoSet(hDbDe, dbRepInfo)
     If iStatus <> NOERROR Then
           Msgbox GetCAPIErrorMsg(iStatus), 48, "Error in API C"
           Exit Sub
     End If
     'Close Source
     iStatus = W32NSFDbClose(hDbSr)
     If iStatus <> NOERROR Then
           Msgbox GetCAPIErrorMsg(iStatus), 48, "Error in API C"
     End If
     'Close Dest.
     iStatus = W32NSFDbClose(hDbDe)
     If iStatus <> NOERROR Then
           Msgbox GetCAPIErrorMsg(iStatus), 48, "Error in API C"
     End If
     
End Sub

Achtung: Wenn man nicht direkt in der ACL mit Name eingetragen ist, ist der Zugriff auf die Replik erst nach dem ersten replicieren möglich!

Gurß Hape


« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »
Gruß
   Hanspeter

Offline Friese

  • Frischling
  • *
  • Beiträge: 41
  • Geschlecht: Männlich
  • Wo kann man günstig ne Datenbank hosten?
Re: Automatische Replikerstellung
« Antwort #6 am: 08.08.02 - 12:32:55 »
Hallo!

Danke erst einmal....

Aber wie und wo hast Du das eingebaut? Alleine schon durch GetCAPIErrorMsg kann ich diese Funktion (sei es als Button oder Agent) nicht speichern.

Hilfe!  :'(
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »

Offline HaPe

  • Junior Mitglied
  • **
  • Beiträge: 81
  • Geschlecht: Männlich
  • Geht net, gibts net ...
    • Mein kleine Seite
Re: Automatische Replikerstellung
« Antwort #7 am: 08.08.02 - 14:25:35 »
Sorry ich hatte die Funktion vergessen :-( . Hier ist Sie:

Function GetCAPIErrorMsg(iStatus As Integer) As String
%REM
GetCAPIErrorMsg - Cette fonction prend le statut de l'erreur retourné par l'API C, retourne le message d'erreurs correspondant venant des entrailles de Notes
et retourne le message à l'appelant.
%END REM
     Dim iLen As Integer
     Dim sBuffer As String
     sBuffer = String$(256, 0)
     iLen = W32OSLoadString(NULLHANDLE, iStatus, sBuffer, Len(sBuffer) - 1)
     If iLen > 0 Then
           GetCAPIErrorMsg = Left$(sBuffer, Instr(1, sBuffer, Chr$(0)) - 1)
     Else
           GetCAPIErrorMsg = "Error unknown"
     End If
End Function

Jetzt sollte es klappen.
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »
Gruß
   Hanspeter

Offline Friese

  • Frischling
  • *
  • Beiträge: 41
  • Geschlecht: Männlich
  • Wo kann man günstig ne Datenbank hosten?
Re: Automatische Replikerstellung
« Antwort #8 am: 08.08.02 - 14:39:34 »
Hallo!

Erst einmal wieder Danke für die Nachricht!

Nur meckert er immer noch, bzw. wieder.

Dieses mal über W32OSLoadString

Könntest Du mir nicht eine Datenbank schicken, in der die Funktion steckt? Mehr braucht ja nicht in der Datenbank sein.

Gruß aus Friesland

PS.: frieslaender@gmx.de
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »

Offline Friese

  • Frischling
  • *
  • Beiträge: 41
  • Geschlecht: Männlich
  • Wo kann man günstig ne Datenbank hosten?
Re: Automatische Replikerstellung
« Antwort #9 am: 08.08.02 - 15:42:37 »
Hallo!

Nun habe ich es hinbekommen HaPe, besten Dank nochmal.

Die einzige Verbesserung wäre nur noch, daß wenn ich eine neue Replik anlege (eben mit dem Script), daß dann auch nicht das Design erstellt wird. Sprich so, als würde ich mit der rechten Maustaste auf das Datenbank Icon gehen würde und sage, ja moin, ich möchte eine neue Replik, aber nicht sofort. Dann entsteht da so etwas, was unter 200 kb groß, bzw klein ist ;-) Und mit der nächsten Replizierung wird das Dingens auf Normalgröße gebracht.

Vielleicht fällt Dir ja noch was ein *hoff*

Gruß
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »

Offline HaPe

  • Junior Mitglied
  • **
  • Beiträge: 81
  • Geschlecht: Männlich
  • Geht net, gibts net ...
    • Mein kleine Seite
Re: Automatische Replikerstellung
« Antwort #10 am: 09.08.02 - 08:42:21 »
Klar fällt mir dazu was ein  ::).

Wenn du die Dim Zeile:

Dim dbSr As New NotesDatabase(strSrSrv,strSrNa)

durch das Template einer neuen leeren DB ersetzt:

Dim dbSr As New NotesDatabase("","default.ntf")

sollte es klappen. Die default.ntf musst du durch das erstellen einer neuen datenbank mut dem "- Blank -" template erstellen.

Hab momentan keinen Zeit das zu testen, gieb mal feedback.

Gruß HaPe


« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »
Gruß
   Hanspeter

Offline Hardy

  • Aktives Mitglied
  • ***
  • Beiträge: 137
  • Geschlecht: Männlich
  • Wer will sucht Wege , wer nicht will sucht Gründe
    • Homepage
Re: Automatische Replikerstellung
« Antwort #11 am: 09.08.02 - 14:48:02 »
Hi,

Ich hatte auch schon nach Möglichkeiten gesucht !
Hier meine Ergebnisse:

Über den AdminClient :
Dateien dann rechts Repliken erstellen. Den Rest macht dann der AdminP. Man muß aber mindestenz Leser auf der DB sein.

oder

in der Sandbox:

http://www-10.lotus.com/ldd/sandbox.nsf/ecc552f1ab6e46e4852568a90055c4cd/90bb96e358b38d5485256a240052f0b3?OpenDocument&Highlight=0,replica

habe ich aber noch nicht getestet !
Ich braucht man aber keine Rechte auf der DB.


Gruß

Hardy
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »
______________________________
Mit Software ist es wie mit Bananen !
Beides reift beim Kunden !!
______________________________
28 x 6.5.5 im Cluster auf WinSrv 2003

Clients:
6.000 User (Win XP Prof.) 6.5.4

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz