Autor Thema: falsche Dokumentzuordnung  (Gelesen 1692 mal)

Offline DAU-in

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.129
  • Geschlecht: Weiblich
  • - unterwegs -
falsche Dokumentzuordnung
« am: 27.12.06 - 11:04:13 »
hallo an alle , die jetzt nicht beim skifahren sind:

ich bin gerade ziemlich frei drehend wegen folgendem:

Problem:
In einer Produktiv-DB wurden durch einen Agenten fälschlicherweise fast alle attachments abgehängt, diese müssen wieder eingefügt werden
derzeit sind alle User an der Datenbereinigung, und der Fehler wurde mit Verzögerung entdeckt, also einfach ein Backup hinstellen ghet nicht, wenn wir nicht gelyncht werden wollen.


Lösungsansatz:
In einer restore-DB läuft ein agent, nimmt sich ein Dokument nach dem anderen, sucht in der Produktiv-DB nach dem entsprechenden dokument, löscht das attachmentfeld, hängt das attachmentfeld aus dem RestoreDokument rein und speichert das ganze.
Es läuft auf den ersten Blick auch zufriedenstellend, allerdings hat eine Kontrolle ergeben, dass manchmal die verkehrten attachmentfelder angehängt werden.
Von den DocIDs her sieht alles korrekt aus. Ich kann keine Regelmässigkeit erkennen, bei einem erneuten Lauf waren jedoch dieselben Dokumente falsch verändert.


mühsam ernährt sich das Eichhörnchen

aktuelle Tätigkeit: Feldschubse

Offline tks

  • Senior Mitglied
  • ****
  • Beiträge: 425
  • Geschlecht: Männlich
  • ...für'n Fuss
Re: falsche Dokumentzuordnung
« Antwort #1 am: 27.12.06 - 11:16:28 »
Kann es sein, daß Variablen noch "alte" Werte haben.

Ich meine, daß er noch Angaben zum Attachment aus einem vorherigen Dokument in einer Variablen gespeichert hat und dann ein Attachment doppelt in unterschiedliche Dokumente reinhängt?
Thomas

*********************************
Domino 8.5.3FP6 unter W2K12
Notes 8.5.3 unter Win7
sequrIQ (watchdog & crypt)
*********************************

Offline DAU-in

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.129
  • Geschlecht: Weiblich
  • - unterwegs -
Re: falsche Dokumentzuordnung
« Antwort #2 am: 27.12.06 - 11:36:34 »
sobald der Konsistenzcheck durch ist, häng ich den Code hier rein


ich setzte rtitem auf nothing, damit sollten 'alte' attachments doch entsorgt sein?

hier ist der code:


Set dbCurrent = session.CurrentDatabase
   Set dbLive = session.GetDatabase( "server", "db")
   
   Set vAct1 = dbCurrent.GetView("(allActivities)")
   Set vAct2 = dblive.GetView("(allActivities)")
   
   
   Set docActOld = vAct1.getfirstdocument
   
   Set stream = session.CreateStream
   flag = stream.Open( "C:\Log\fr_protocol_Body.txt", "Windows-1252")   
   
   
   Set streamNot = session.CreateStream
   flagNot = streamNot.Open( "C:\Log\fr_protocol_notFound.txt", "Windows-1252")   
   
   Set streamError = session.CreateStream
   flagError = streamError.Open( "C:\Log\fr_oprotocol_Error.txt", "Windows-1252")   
   
   
   
   
   i = 1
   
   While Not docActOld Is Nothing
      
      Print i
      
      strDoc(0) = docActOld.Form(0)
      strDoc(1) = docActOld.activityDocID(0)
   '   Set docActNew = vAct2.GetDocumentByKey(strDoc)
      
      Set docActNew = dbLive.GetDocumentByUNID( docActOld.activityDocID(0) )
      If Not docActNew Is Nothing Then      
         
         
         Set rtitem = docActOld.GetFirstItem("Body")
         
         If Not rtitem Is Nothing Then
            
            Call docActNew.RemoveItem( "Body")
            
            Call docActNew.CopyItem( rtitem, "Body")
            
            Call docActNew.Save(True,False)
            
            Call stream.WriteText(Cstr(i ) & "~'~" & strDoc (0) & "~'~" & strDoc(1) & Chr(13))
         Else
            Call streamError.WriteText(Cstr(i ) & "~'~" & strDoc (0) & "~'~" & strDoc(1) & "~'~" & " no body" & Chr(13))
            
            
         End If
         
         
         Set rtitem = Nothing
         
      Else
         
         Call streamNot.WriteText(Cstr(i ) & "~'~" &  strDoc (0) & "~'~" & strDoc(1)   & "~'~" & " no doc"  &Chr(13))
         
      End If
      
      
      Set docActOld = vAct1.getnextdocument(docActOld)
      i = i+ 1
      
   Wend
   
   Call stream.Close
   Call streamNot.Close
   Call streamError.Close
   
   Exit Sub
   
   
errorhandling:
   Call streamError.WriteText(strDoc (0) & "~'~" & strDoc(1) & "~'~" & " error"  & Chr(13))
   Set docActOld = vAct1.getnextdocument(docActOld)
   i = i+ 1
   If Not rtitem Is Nothing Then Set rtitem = Nothing
   Resume Next
« Letzte Änderung: 27.12.06 - 11:39:38 von DAU-in »
mühsam ernährt sich das Eichhörnchen

aktuelle Tätigkeit: Feldschubse

Offline tks

  • Senior Mitglied
  • ****
  • Beiträge: 425
  • Geschlecht: Männlich
  • ...für'n Fuss
Re: falsche Dokumentzuordnung
« Antwort #3 am: 27.12.06 - 13:59:25 »
So auf den ersten Blick kann ich keinen Fehler erkennen.

Ich vermute aber, daß nach errorhandling was schiefläuft. Wenn in DBAlt ein Dokument drin ist, daß es nicht mehr in DBAktuell gibt, müsste das Script auf errorhandling laufen. Dort wird dann mit dem nächsten Dok (alt) weitergemacht und docActNew ist noch befüllt. Als Schuss ins Blaue würde ich einfach hier mal docActNew auf Nothing setzen.

Sorry, aber mehr fällt mir da auch nicht ein.
Thomas

*********************************
Domino 8.5.3FP6 unter W2K12
Notes 8.5.3 unter Win7
sequrIQ (watchdog & crypt)
*********************************

Offline DAU-in

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.129
  • Geschlecht: Weiblich
  • - unterwegs -
Re: falsche Dokumentzuordnung
« Antwort #4 am: 27.12.06 - 15:02:46 »
Hallo,

das ganz merkwürdige ist, das das ganze mit lokalen Kopien problemlos durchläuft, nur auf dem Server nicht.

ich probier mal weiter.

aber auf alle Fälle vielen Dank, das docActNew habe ich übersehen
mühsam ernährt sich das Eichhörnchen

aktuelle Tätigkeit: Feldschubse

Offline it898ur

  • Senior Mitglied
  • ****
  • Beiträge: 478
Re: falsche Dokumentzuordnung
« Antwort #5 am: 28.12.06 - 08:12:25 »
Da die Navigation über Views läuft, würde ich AutoUpdate auf False setzen, um Veränderungen in den Ansichten während des Agentendurchlaufs zu verhindern (ein Effekt der nur am Server auftreteten kann, da lokal immer nur ein User angemeldet sein kann).

Gruß

André

Offline DAU-in

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.129
  • Geschlecht: Weiblich
  • - unterwegs -
Re: falsche Dokumentzuordnung
« Antwort #6 am: 28.12.06 - 09:37:31 »
Hallo,

das muss ich ausprobieren.

danke

Dau-in
mühsam ernährt sich das Eichhörnchen

aktuelle Tätigkeit: Feldschubse

Offline DAU-in

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.129
  • Geschlecht: Weiblich
  • - unterwegs -
Re: falsche Dokumentzuordnung
« Antwort #7 am: 28.12.06 - 20:30:25 »
Dieses Problem ist inzwischen so gelöst/umschifft, dass ich die gesamten Dokumente kopiert habe.

Auf dem Server habe ich das einfach nicht korrekt zum Laufen gebracht.
mühsam ernährt sich das Eichhörnchen

aktuelle Tätigkeit: Feldschubse

Driri

  • Gast
Re: falsche Dokumentzuordnung
« Antwort #8 am: 29.12.06 - 09:06:05 »
Wenn es lokal läuft, warum hast Du dann nicht einfach Repliken erstellt, die Datenbank auf dem Server gesperrt (ACL) und das Script lokal laufen lassen. Anschließend hochreplizieren, ACL wieder einrichten und fertig.

Offline DAU-in

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.129
  • Geschlecht: Weiblich
  • - unterwegs -
Re: falsche Dokumentzuordnung
« Antwort #9 am: 29.12.06 - 10:16:59 »
Wenn es lokal läuft, warum hast Du dann nicht einfach Repliken erstellt, die Datenbank auf dem Server gesperrt (ACL) und das Script lokal laufen lassen. Anschließend hochreplizieren, ACL wieder einrichten und fertig.

weil ich dafür noch eine andere Abteilung bemühen müsste, und ich noch in diesem Jahr fertigwerden musste ..........
mühsam ernährt sich das Eichhörnchen

aktuelle Tätigkeit: Feldschubse

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz