Artikel: Symptom "NNN Fehler wurden festgestellt (siehe oben)"

Symptom / Fehlermeldung:

Sobald ein Datei- oder Datenbankdefekt feststellt wird, merkt sich MailStore Home (MSH) dieses und meldet es. Die allgemein sichtbare Fehlermeldung dieses Symptoms ist:
NNN errors have been found (see above).

Beispiel (in englischer, bzw. deutscher Schreibweise):

40 errors have been found (see above).
40 Fehler wurden festgestellt (siehe oben)

Was bedeutet die Meldung?

MailStore Home vergleicht die Inhalte der Datenbankaufzeichnungen (Records, d.h. archivierte E-Mails innerhalb der Container Dateien) mit dem Inhalt der E-Mails die zu archivieren sind (E-Mail Programm bzw. E-Mail Hoster), bevor MSH entscheidet, ob eine E-Mail bereits archiviert wurde oder neu zu archivieren ist. Sollte eine Situation auftreten, die MSH nicht auflösen kann, versucht MSH weiterhin zu archivieren, merkt und meldet die Summe der Vorfälle beim Abschluss des Vorganges.MSH hat also Probleme mit E-Mails und der Datenbank festgestellt und diese angezeigt.

Was verursacht die Meldung, bzw. ist der Grund dafür?

Die Fehler selbst können durch defekte E-Mails, defekte Container Dateien (Defekte in den Datenbank Dateien) oder durch inkorrekte Datenbankstrukturen verursacht werden.
Solche Defekte können durch nicht-exklusiven Zugriff auf Dateien der Datenbank verursacht werden (z.B. wenn MSH und ein anderes Program wie Anti-Viren Software oder Sicherungsprogram gleichzeitig zugreifen). Es ist wichtig das die MSH Datenbank nur exklusiv verwendet wird: entweder durch MSH allein, oder durch ein anderes Program (z.B. Backup oder AV Scan).

Kann das Symptom behoben werden?

Sollte das Symptom auftreten, dann können Sie versuchen noch alle intakten E-Mails aus dem Archiv als EML Dateien zu exportieren. Danach legen Sie ein neues Archiv an und importieren die EML Dateien in das neue Archiv. Ein Nachteil ist das alle als “defekt” befundenen E-Mails möglicherweise verloren sind.

Gibt es eine Alternative, und wann macht es Sinn (Troubleshooting)?

Um herauszufinden ob es eine Alternative gibt und wie man evt. doch “defekte” E-Mails retten kann, lohnt sich ein Blick auf das Debug-Log und einem möglichen Rettungsversuch.
Wirklich defekte E-Mails oder Dateien lassen sich aber auch über diesen Weg nicht reparieren.

  1. Erstellen Sie eine Sicherung der derzeitigen Datenbank/Archiv. Stellen Sie sicher das MSH geschlossen ist und kein anderes Program oder (Hintergrund-) Service (z.B. Anti-Viren oder Cloud Software) evt. die Dantenbank-Dateien offen hält. Stellen Sie sicher das Sie eine Sicherung haben.
    Der Artikel im :globe_with_meridians: MailStore Home Hilfe - Datensicherung und Wiederherstellung beschreibt die Vorgehensweise.

  2. Erstellen Sie eine Debug-Log Datei. Der Artikel: Erstellen einer DEBUG-LOG Datei beschreibt den Vorgang

  3. Verwenden Sie Ihren bevorzugten TEXT Editor um die Log Datei zu öffnen.

  4. Schauen Sie sich die Inhalte an und suchen Sie z.B. nach dem Schlüsselwort EXCEPTION oder ERROR. Sie können anhand der Sequenz meist erkennen was vor sich geht.
    Hier ist ein Beispiel (in English, kann aber auch in anderen Sprachen sichtbar sein):

    11:38:06.135 [10] INFO: Terminal: 27.389 messages are about to be verified.
    12:07:44.796 [10] EXCEPTION: System.Exception: Mail not found.
    

Die Zeichenkette #xx.#xxx.#xxx bezieht sich dabei auf .Net Code Information die Sie ignorieren können.
Hier ist ein Bespiel wo ziemlich eindeutig Daten defekt sind (in diesem Beispiel sind einige Zeilen der Einfachheit halber entfernt worden):

   12:08:05.343 [10] EXCEPTION: System.Exception: Mail nicht gefunden.
   12:08:05.343 [10] INFO: Terminal: Message #26916: Mail nicht gefunden.
   12:08:48.632 [10] EXCEPTION: FirebirdSql.Data.FirebirdClient.FbException: internal Firebird consistency check (decompression overran buffer (179), file: sqz.cpp line: 228)
          *** Inner Exception ***
          FirebirdSql.Data.Common.IscException: internal Firebird consistency check (decompression overran buffer (179), file: sqz.cpp line: 228)

   12:08:48.633 [10] INFO: Terminal: Message #27538: Ein Datenbankfehler ist aufgetreten. Code: 335544333. 
   Details: internal Firebird consistency check (decompression overran buffer (179), file: sqz.cpp line: 228)
   12:08:48.636 [10] EXCEPTION: FirebirdSql.Data.FirebirdClient.FbException: invalid statement handle
          *** Inner Exception ***
          FirebirdSql.Data.Common.IscException: invalid statement handle
   
   12:08:48.636 [10] INFO: Terminal: Message #27539: Ein Datenbankfehler ist aufgetreten. Code:     335544485. Details: invalid statement handle
   12:08:48.638 [10] EXCEPTION: FirebirdSql.Data.FirebirdClient.FbException: invalid statement handle
   bei FirebirdSql.Data.FirebirdClient.FbCommand.ExecuteReader(CommandBehavior behavior)
   bei FirebirdSql.Data.FirebirdClient.FbCommand.ExecuteReader()
          *** Inner Exception ***
          FirebirdSql.Data.Common.IscException: invalid statement handle

Wie kann ich das Problem lösen:

  1. Um beim Beispiel oben zu bleiben: es ist ein Dateidefekt. Der schnellste Weg ist eine Sicherung (Backup restore) einzuspielen.

  2. Sollte eine Sicherung nicht zur Verfügung stehen, und der wahrscheinliche Verlust von einigen E-Mails ist akzeptabel, sollten die noch intakten E-Mails als EML Daten exportiert werden. Erstellen Sie dann ein neues Archiv, importieren die EML Dateien und stellen dann ein neues Archivierungsprofil für das Archiv.

  3. Es gibt noch eine letzte Option: Sie können versuchen die archivierten “defekten” E-Mails aus den Container-Dateien (*.dat) wiederzugewinnen. Wirklich defekte Daten lassen sich aber so auch nicht rückgewinnen. Für diesen Vorgang benötigen Sie einen installierten MailStore Server. Eine Test/Trial Lizenz ist dafür ausreichend - es werden lediglich die Program Dateien benötigt.
    Hier finden Sie den :globe_with_meridians: MailStore Server Download.

Die folgenden Schritte sind ein Versuch die Daten direkt aus den Container Dateien zu extrahieren.
Folgende Vorraussetzungen sind nötig damit Sie der Beschreibung folgen können:

  1. MailStore Server ist im Pfad “C:\Program Files (x86)\deepinvent\MailStore Server” installiert
  2. Ihr SERVER Archiv befindet sich hier: “C:\MailStore”
  3. Sie haben ein Verzeichnis das sich “C:\EML” nennt und genügend Speicherkapazität hat um alle gewonnenen E-Mails (mit Anhängen) aufzunehmen. Der notwendige Platz dafür ist etwas größer als die Größe der MailStoreFileGroup, da MailStore komprimiert und E-Mails de-dupliziert. Dieser Prozess erzeught unkomprimierte E-Mails. Der Pfad zum verzeichnis muss nicht auf dem Laufwerk C:\ liegen, und es können verlinkte Verzeichnisse (Mapped Drive Letters) verwendet werden (einer der wenigen Situationen wo MailStore es erlaubt verlinkte Verzeichnisse zu nutzen). Folgende Instruktionen passen Sie Ihrer Situation bitte an.

Schritt für Schritt Anleitung:

  1. Shut down MailStore Service.
    Mehr dazu unter :globe_with_meridians: MailStore Server Hilfe - MailStore Server Dienst-Konfiguration

  2. Erstellen Sie das Verzeichnis C:\EML falls es nicht existiert.

  3. Löschen Sie alle Dateien in “C:\MailArchive” und den Unterverzeichnissen, aber belassen Sie die Verzeichnisstruktur.

  4. Kopieren Sie alle *.dat Dateien von “%userprofile%\My documents\MailStore Home” to “C:\MailArchive\DefaultFileGroup\Content\A\AXXX”
    Es befinden sich maximal 999 Container Dateien im ersten Verzeichnis A000. Bitte kopieren Sie “1000.dat” bis “1999.dat” zum Verzeichnis A001 und “2000.dat” bis “2999.dat” ins Verzeichnis A002, und so weiter.

  5. Kopieren Sie alle *.fdb Dateien von “%userprofile%\My documents\MailStore Home” nach “C:\MailArchive”

  6. Öffnen Sie eine Windows Kommandokonsole und geben Sie folgendes Kommando ein:

    "C:\Program Files (x86)\deepinvent\MailStore Server\MailStoreServer_x86.exe" /recover /inputDir="C:\MailStore" /outputDir="C:\EML"

    Nach Absetzen des Kommandos kann es eine signifikante Zeit dauern bis alle archivierten Emails exportiert wurden.
    Hinweis: Sollten Sie in ein Problem laufen und es nicht lösen können, stellen Sie eine neue Konversation in die Community (bezug auf diesen Artikel, mit Fehlermeldung und Problembeschreibung).

  7. Erzeugen Sie ein neues Archiv Verzeichnis für MailStore Home (z.B. via Windows Startmenu -> “All Programs” -> “MailStore Home” -> “MailStore Home - Select Data Directory” -> “Create Archive…”)

  8. Gehen Sie in MailStore Home zu “Archive E-mail” -> Klicken Sie “EML and MSG Files” -> Archivieren von C:\EML, mit aktivierten “Include Subfolders” und “Read MailStore Headers” (enabled).

Wie gesagt, es kann in einigen Situation helfen, muss aber nicht immer zutreffen.


Weitere Hinweise und Informationen

Wie finde ich nun die E-Mail in meinem Archiv auf die die besagte MESSAGE ID hindeutet?

12:08:05.343 [10] EXCEPTION: System.Exception: Mail nicht gefunden.
12:08:05.343 [10] INFO: Terminal: Message #26916: Mail nicht gefunden.

Es wird nun die obige Information angezeigt, aber wie finde ich nun die Nachricht mit der Nummer #26916.
Durch das Verwenden des „Schnellsuche im Archiv“ (nicht in „E-Mails suchen“ Dialog). Dort bitte nach folgender Syntax die Daten eingeben:

[File Group]:[Message ID] 

Da MSH nur eine Dateigruppe („File Group“) hat, ist der erste Wert „1“. Die Nachrichten Nummer („Message ID“) ist ja bekannt. Also einfach folgendes eingeben:

1:26916

und natürlich für weitere andere Nachrichten/E-Mails das Gleiche durchführen.

Schnellsuche