Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: chock am 24.11.04 - 15:23:26

Titel: Dokumente in eine andere DB kopieren
Beitrag von: chock am 24.11.04 - 15:23:26
Hallo,

ich versuche Dokumente aus einem bestimmten View in eine andere Datenbank zu kopieren.
Finde keinen passenden Befehl fürs kopieren.
                .
   Set db2 = s.GetDatabase("Server", "xy")
   Set view2= db2.GetView("Certificates")
   Set vc = view2.AllEntries
   Call vc.

Danke
Titel: Re: Dokumente in eine andere DB kopieren
Beitrag von: koehlerbv am 24.11.04 - 15:26:35
Nicht mit einer NotesViewEntryCollection arbeiten, sondern besser von NotesView.GetFirstDocument ausgehend gleich die Dokumente instantiieren.
Kopieren mit NotesDocument.CopyToDatabase.

HTH,
Bernhard
Titel: Re: Dokumente in eine andere DB kopieren
Beitrag von: rar am 24.11.04 - 16:22:54
AllEntries ist sehr böse!!!

Wir haben mal ein Agent gehabt, der bei view.AllEntries ohne Vorwarnung den Server komplett abgeschossen hat.
Titel: Re: Dokumente in eine andere DB kopieren
Beitrag von: Axel am 24.11.04 - 19:26:51
AllEntries ist sehr böse!!!

Wir haben mal ein Agent gehabt, der bei view.AllEntries ohne Vorwarnung den Server komplett abgeschossen hat.


In welcher Beziehung? Welche Version war denn das. Ich habe AllEntries schon einige Male benutzt, auch in Agenten, die durch User, des öfters aufgerufen werden. Bisher hatte ich keine Probleme damit.


Axel
Titel: Re: Dokumente in eine andere DB kopieren
Beitrag von: rar am 25.11.04 - 10:14:58
Es hat ewig gedauert, bis wir den Fehler gefunden haben.

Das Problem war folgendes:
Server 5.0.11
Der Client "schiesst" bei View.AllEntries den Domino Server mit der Meldung "Puffer zu klein ..." komplett ab, der Domino Server wird mit der Meldung, dass ein Memory Breakpunkt erreicht ist, gekillt.
In unserer Testumgebung konnte das Szenario nachgestellt werden. Dabei kann der gecrashte Domino Server meist nur über Neustart des Betriebssystemes neu gestartet werden. Wird als Default Debugger nsd statt quincy aktiviert, kann der Server nach Wegschreibens eines Debug Files als Dienst neu gestartet werden (bei nsd als Debugger hat das Debug File mehr als 1000 Seiten !!! - das zu diesem Debugg Programm), ohne das Betriebssystem neu zu starten.

Problemlösungen:
Workaround wie unten von der IBM beschrieben.
Update auf Domino Server 5.0.12 (dort ist das Problem behoben).

Mail von der IBM:
Hi,

I'm contacting you in relation to your PMR ##### - I would just like to update you that I have collaborated with our server team advisor on this issue and have the following to report... Your analysis of this issue is 100% correct. The identified issue is with the view.Allentries method. This crash is caused by an overwrite of memory in the GetCollectionData transaction where a buffer is written past the limit.

A fix was introduced in Domino 5.0.12 for SPR #CMCY5BY22L for this issue - please see the following URL...
http://www-10.lotus.com/ldd/r5fixlist.nsf/Search?SearchView&Query=CMCY5BY22L&SearchOrder=0&Start=1&Count=100

It is recommended that you upgrade your server to 5.0.12 to resolve this issue.
OR     
As for workaround, the process would be, assuming the code has :         
    Set view = db.GetView( Folder )                                     
    Set vc = view.AllEntries                                             

It would need to be changed to something like :
     Set view = db.GetView( Folder )                                     
     Set doc = view.getfirstdocument                                     
     While Not doc Is Nothing                                           
          Set doc = view.getnextdocument                                 
     Wend                                                               

Your time and analysis of this issue has been a great aid identifying this issue - I hope that my update has helped and please update me of your thought or results in testing the workaround or whether you plan to upgrade the server.

If you have any questions regarding the above, please do not hesitate to contact Lotus Support. We will be more than happy to assist.

Regards,

Hoffe das hilft dir weiter..
lG
-daniel
Titel: Re: Dokumente in eine andere DB kopieren
Beitrag von: Axel am 25.11.04 - 10:26:41
Hi,

den Workaround, den IBM vorschlägt, hatte so im meinem Agenten schon eingebaut. Deshalb habe ich wahrscheinlich noch nie Probleme gehabt.

Danke für den Hinweis.  Ist der Bug eigentlich auch noch unter 6.5 bekannt?


Axel
Titel: Re: Dokumente in eine andere DB kopieren
Beitrag von: rar am 25.11.04 - 10:30:53
Ich arbeite eigentlich nur mit dem Workaround. AllEntries hab ich (glaub ich) noch nie verwendet...

Ob der Bug unter 6.5 noch da ist kann ich dir nicht sagen. Keine Ahnung.
Titel: Re: Dokumente in eine andere DB kopieren
Beitrag von: chock am 26.11.04 - 18:27:26
Danke für die vielen Antworten, konnte das Problem lösen.

Set view2= db2.GetView("Ansicht")
Set doc2 = view2.GetFirstDocument
While Not(doc2 Is Nothing)
Call doc2.CopyToDatabase(db)
Set doc2 = view2.GetNextDocument(doc2)
Wend