die grundsaetzliche anforderung kennt denke ich jeder, der domino systeme betreut: der user xy moechte x monate aus seiner aktuellen maildatenbank auf cd gebrannt haben – weil er einfach selbst zu faul oder was auch immer ist, das selbst mittels archivierung zu erledigen.
ich stand jedenfalls vor folgendem problem: bei einem kunden archivieren alle anwender mittels einem etwas angepasstem script ausschlieszlich auf einem archivserver; wenn das archiv eine groesze von ca. 550 mb erreicht hat, so brennen wir es fast automatisch auf cd welche der anwender anschlieszend erhaehlt, und das archiv wird wieder entleert. wir verwenden dazu einen cd-roboter (von mediaform) mit 4 brennern und s/w drucker, also ansich eine feine sache. nur war das ding vor kurzem kaputt; und da die reparatur aufgrund von nutzlosen “wer braucht das ding ueberhaupt, wer zahlt es” diskussionen laenger gedauert hat, haben sich uber 500 archiv-datenbanken angesammelt, die zu gross fuer eine cd sind.

was ich also unbedingt brauchte, war eine tool/script/was auch immer, dass mir die riesigen datenbanken auf cd gerechte happen aufteilt; nur – so etwas habe ich leider nicht gefunden. also musste ich mich selber spielen; was dabei rauskam ist der Domino Database Splitter 😉

im prinzip ein agent, der folgendes macht:
– einen view mit einer zuvor pro auftrag frei bestimmbaren selection formula anlegen
– alle ordner durchgehen und die folderreferences setzen
– alle dokumente in diesem view in neue datenbanken (leere notes kopien mit design, d.h. keine replik) kopieren und die zugehoerigkeit zu den ordnern wiederherstellen. die maximale groesze einer datenbank kann im script festgelegt werden.

auftraege koennen entweder manuell oder durch einfuegen von log-dokumenten erstellt werden. der agent ist noch immer relativ langsam (eine 2 gb datenbank wird in ca. 4 stunden zerlegt), doch im vergleich zu den anfaengen schon extrem performant Mrgreen in Domino Database Splitter – ich habe schon so weit optimiert als es mir moeglich ist…
der agent muss in einem 6er client gestartet werden, da zumindest die von mir verwendete methode des view erstellens erst dort moeglich ist. da ich aber 5er datenbanken benoetige, erstellt der agent datenbanken mit der endung ns5, welche aber anschlieszend auf nsf umbenannt werden.

ihr koennt die datenbank downloaden und damit machen was ihr wollt (die einzige bedingung ist, dass ich namentlich mit link auf diese seite erwaehnt werden moechte – auch, wenn ihr das script abaendert oder erweitert) – vielleicht koennt ihr sie ja brauchen. ich bin mir sicher, dass es genug bugs in dem agent gibt – die fehlerkontrolle ist eher minimalistisch. bitte verschont mich mit kranken kommentaren – wenn euch was nicht passt, muesst ihr es ja nicht verwenden. wenn ihr fehler gefunden, verbesserungs- oder erweiterungsvorschlaege habt, dann koennt ihr mir die gerne sagen. wenn ich zeit und lust habe, werde ich es mir vielleicht anschauen und eine neue version online stellen. ich lehne aber jede verantwortung fuer diese datenbank strikt ab – bei mir funktioniert es, wenn es bei euch zu datenverlust oder was auch immer kommt habt ihr leider pech gehabt!

hier gehts zum download:
Domino Db Splitter in Domino Database Splitter

10 Responses to Domino Database Splitter

  • Pingback: konfabulieren » DBSplitter

  • Ralf says:

    Bei dir funzt das? Bei mir nämlich nicht: Zeile 80 in SplitIT. Da spuckt er Fehler 92 (FOR loop not initialized).

    greetz
    Ralf

  • hipslu says:

    hmmm; hab mir das gerade angesehen – kann mir eigentlich nur vorstellen, dass keine dokumente in der collection sind; entweder, weil wirklich keine dokumente in der datenbank sind – oder, weil die verwendete id keine rechte auf die vorhandenen dokumente hat (z.b. leser-felder):
    Set Collection = CheckView.AllEntries
    CC = Collection.Count
    ‘in einer Schleife durchgehen
    For DocCounter = 1 To CC

    füge mal folgendes nach “CC = Collection.Count” ein:
    if cint(cc) = 0 then msgbox(“keine dokumente in der collection!”)

    somit solltest du also eine messagebox bekommen, wenn in der collection keine dokumente enthalten sind.

  • markus says:

    also bei mir funktioniert es einwandfrei! vielen dank!

  • Ralf says:

    Mahlzeit!

    Ich habs mir meiner Mail-DB versucht. Es gibt sowohl Dokumente mit Folder-Refs und auch Dokumente ohne Refs, z.B. Kalendereinträge. Ich hab es soweit nachvollzogen, dass der Agent solange durchrennt, wie er nur Dokumente *ohne* Refs hat. Beim ersten Dokument mit Folder References, fällt er dann auf die Nase.

  • hipslu says:

    der agent prüft am anfang, ob die folderreferences enabled sind:
    If Not CheckDB.FolderReferencesEnabled Then
    CheckDB.FolderReferencesEnabled = True
    wenn nicht, aktiviert es sie und geht alle dokumente durch, um sie nochmals in den ordner zu stellen, damit eben die folderreferences gesetzt werden; wird der agent dazwischen abgebrochen, springt er beim nächsten lauf drüber – obwohl ein (groß)teil der dokumente noch nicht bearbeitet wurde; kann das vielleicht der grund sein? hast du den agent beim ersten mal abgebrochen?

    versuch mal eine andere datenbank, oder nimm in der Sub CheckFolderReferences die if bedingung in der zeile 11 raus, sowie das “end if” in der zeile 20. somit läuft er immer drüber.

    wenns dann noch probleme gibt, melde dich per mail: hipslu ät gmail dot com (ja, ich schreibe das absichtlich so, in der hoffnung, dass es kein bot lesen kann)

  • Ralf says:

    Der Agent ist noch nicht ein einziges Mal durchgelaufen. Da CheckFolderReferences aber vor SplitIT kommt und der Agent erst dort aussteigt, sollte das also abgehakt sein…

    btw: Du hast Mail

  • andi says:

    ich verwende das tool, um einige unserer applikationsdatenbanken zu archivieren – da man ja die selection formula angeben kann, erspart mir das viel zeit; vorher musste ich das immer händisch machen 🙁

  • julius says:

    besten dank, genau danach habe ich gesucht

  • steve says:

    genial! das hätte ich schon früher gut brauchen können – ich archiviere damit einige unserer applikationsdatenbanken sowie meine maildatenbank!! DANKE