Das Notes Forum
Domino 9 und frühere Versionen => ND8: Administration & Userprobleme => Thema gestartet von: Tiger955 am 04.03.15 - 16:32:23
-
Leider konnte ich keine Info finden, WELCHE ID oder sonstiger einmaliger Wert eine erhaltene Notes-Mail kennzeichnet, die noch dazu automatisch immer im gleichen Order der gleichen Mailbox landen.
Ich bin dann auf das Feld $MessageID gestoßen, welches ich als DAS unique Feld erhofft hatte.
Zu meiner großen Verwunderung gibt es aber in diesem Feld Duplikate!!!
Da ich die Mails mit VBA auslese und die $MessageID, zusammen mit dem DeliveredDate in eine SQL-SErver Tabelle schreibe und dabei die $MessageID der Primärschlüssel ist, habe ich nicht schlecht gestaunt, wie es zu einem Fehler kam, weil eine Mail aus 2013 die gleiche $MessageID hat, wie ein Mail von heute. Noch dazu ist das alte Mail schon lange aus dieser Mailbox gelöscht gewesen!!
Also, was definiert nun eindeutig eine Mail-Nachricht??
Danke!
Michael
-
Der eindeutige Schlüssel zu einem Dokument innerhalb einer Notes-Datenbank ist die UniversalID, das ist aber kein Feld im Dokument, sondern eine Eigenschaft.
Sammelst Du Dokumente über mehrere Datenbanken, kannst Du Dich darauf alleine nicht verlassen. Dann würde ich einen Schlüssel aus der ReplikID der Datenbank und der UniversalID des Dokuments zusammenstellen.
Domänenübergreifend ist auch dieser Schlüssel nicht garantiert eindeutig. Selbstverständlich kann in einer anderen Domäne eine Datenbank die gleiche ReplikID besitzen, und Dokumente enthalten, die die gleiche UniversalID tragen. Aber das ist sicherlich für Deinen Anwendungsfall ein eher theoretisches Problem.
-
Dann würde ich einen Schlüssel aus der ReplikID der Datenbank und der UniversalID des Dokuments zusammenstellen.
Allgemeine Zustimmung, nur zu oben gesagten folgende Anmerkung: ReplicaID und UniversalID wäre "doppelt gemoppelt", denn die ReplicaID ist Bestandteil der UniversalID.
Benrhard
-
Bernhard, hier muss ich dir widersprechen. Das war zwar früher so, seit Notes 8 zumindest beobachte ich, dass die ersten 16 Stellen der UNID eben nicht mehr die Replik-ID sind. (Dann folgen 16 Stellen für das Erstellt-Datum des Dokuments)
Die $MessageID muss laut RFC2822 eigentlich auch eindeutig sein.
https://tools.ietf.org/html/rfc2822
The message identifier (msg-id) itself MUST be a globally unique
identifier for a message. The generator of the message identifier
MUST guarantee that the msg-id is unique.
Das Problem ist vermutlich, dass sich der Absender nicht an die RFC hält.
Gruß Roland
-
Dann würde ich einen Schlüssel aus der ReplikID der Datenbank und der UniversalID des Dokuments zusammenstellen.
Allgemeine Zustimmung, nur zu oben gesagten folgende Anmerkung: ReplicaID und UniversalID wäre "doppelt gemoppelt", denn die ReplicaID ist Bestandteil der UniversalID.
Benrhard
doc1 sei ein Dokument der db1
Dim doc2 As New NotesDocument (db2)
Call doc1.CopyAllItems (doc2)
doc2.UniversalID = doc1.UniversalID
Call doc2.Save (True, True)
Dann hast Du zwei Dokumente in zwei verschiedenen Datenbanken mit identischer UniversalID. Ich mache sowas gerne bei Archivierungen, da dann das ursprüngliche Erstelldatum des Dokuments erhalten bleibt.
-
Mea culpa - das war auf die Schnelle und wider eigenes besseres Wissen gepostet :'(
Bernhard
-
Das geht viel einfacher: Versende mal eine Mail und prüfe die UNID der Dokumente im Gesendet des Senders und Eingang jedes einzelnen Empfängers...
-
Danke für Eure Antworten.
Für meine Anwendung habe ich es mit strUNID=LNdoc.UniversalID nunmehr gelöst.
Da wir weder replizieren, noch diese Mails irgendwo hinkopieren, hoffe ich nunmehr, dass es keine weitere Primärschlüsselverletzung geben kann.
Grüße
Michael
@Roland:
Da diese Mails von einer Abteilung generiert werden und von der anderen Abteilung eingelesen werden, also alles über den selben domino-Server läuft, würde mir ein Screenshot sehr helfen, wo man RFC definiert. Ich kenn mich da viel zu wenig aus, aber unsere IT sollte sich das mal anschauen, vielleicht sind wir ja selbst schuld an den Duplikaten in der $MessageID - wenn ich das mit RFC richtig verstanden habe.