Die DB eines Exchange 2013 liess sich nicht mehr einbinden, der Status unter EAC lautete «Einbindung aufgehoben». Eventlog zeigte diverse Fehler und Warnungen:
Quelle: ESE (ESE); Ereignis ID: 482
Information Store - Mailbox Database xxx (12380) Mailbox Database xxx: Fehler nach 0.000 Sekunden beim Schreiben in Datei "D:\ExchangeData\Mailbox\Mailbox Database xxx\Mailbox Database xxx.edb" bei Offset 110595407872 (0x00000019c0000000) für 0 (0x00000000) Bytes mit Systemfehler 665 (0x00000299): "Der angeforderte Vorgang konnte aufgrund einer Dateisystemeinschränkung nicht abgeschlossen werden. ". Fehler -1022 (0xfffffc02) bei Schreiboperation. Wenn dieser Zustand andauert, ist die Datei möglicherweise beschädigt und muss aus einer vorherigen Sicherung wiederhergestellt werden.
Quelle: ESE (ESE); Ereignis ID: 454
Information Store - Mailbox Database 2072421121 (12380) Mailbox Database 2072421121: Fehler bei der Datenbankwiederherstellung mit dem unerwarteten Fehler -1022.
Quelle: ExchangeStoreDB; Ereignis ID: 206
28.05.2018 08:43:12: Für die Kopie der Datenbank 'Mailbox Database xxx' auf diesem Server scheint ein schwerwiegender E/A-Fehler vorzuliegen. Überprüfen Sie das Ereignisprotokoll auf dem Server hinsichtlich anderer Speicher- und "ExchangeStoreDb"-Ereignisse, um detailliertere Informationen zu dem Fehler zu erhalten. Die Dienstwiederherstellung wurde mithilfe eines Failovers auf eine andere Kopie versucht. Failover konnte den Dienst nicht wiederherstellen. Fehler: Es ist nur eine Kopie der Postfachdatenbank (Mailbox Database 2072421121) vorhanden. Es ist keine automatische Wiederherstellung verfügbar.
Mit folgendem Befehl konnte ich den Status der DB prüfen:
C:\Program Files\Microsoft\Exchange Server\V15\Bin\eseutil.exe /MH "D:\ExchangeData\Mailbox\Mailbox Database xxx\Mailbox Database xxx.edb"
Output war folgender:
Extensible Storage Engine Utilities for Microsoft(R) Exchange Server Version 15.00 Copyright (C) Microsoft Corporation. All Rights Reserved. Initiating FILE DUMP mode... Database: D:\ExchangeData\Mailbox\Mailbox Database xxx\Mailbox Database xxx.edb DATABASE HEADER: Checksum Information: Expected Checksum: 0xcf09ec4a Actual Checksum: 0xcf09ec4a Fields: File Type: Database Checksum: 0xcf09ec4a Format ulMagic: 0x89abcdef Engine ulMagic: 0x89abcdef Format ulVersion: 0x620,20 Engine ulVersion: 0x620,20 Created ulVersion: 0x620,20 DB Signature: Create time:12/21/2013 10:33:03.226 Rand:3416686835 Computer: cbDbPage: 32768 dbtime: 953713227 (0x38d8824b) State: Dirty Shutdown Log Required: 1013428-1013474 (0xf76b4-0xf76e2) Log Committed: 0-1013475 (0x0-0xf76e3) Log Recovering: 1013453 (0xf76cd) GenMax Creation: 05/28/2018 08:32:51.797 Shadowed: Yes Last Objid: 464345 Scrub Dbtime: 0 (0x0) Scrub Date: 00/00/1900 00:00:00 Repair Count: 0 Repair Date: 00/00/1900 00:00:00.000 Old Repair Count: 0 Last Consistent: (0xE923A,E,5C) 03/14/2018 20:02:47.244 Last Attach: (0xE923B,2,268) 03/14/2018 20:22:22.866 Last Detach: (0x0,0,0) 00/00/1900 00:00:00.000 Last ReAttach: (0xF76C4,2,268) 05/28/2018 10:37:14.921 Dbid: 1 Log Signature: Create time:12/21/2013 10:33:02.867 Rand:763432890 Computer: OS Version: (6.2.9200 SP 0 NLS ffffffff.ffffffff) Previous Full Backup: Log Gen: 1012126-1012128 (0xf719e-0xf71a0) - OSSnapshot Mark: (0xF71A1,1,0) Mark: 05/26/2018 21:55:25.610 Previous Incremental Backup: Log Gen: 0-0 (0x0-0x0) Mark: (0x0,0,0) Mark: 00/00/1900 00:00:00.000 Previous Copy Backup: Log Gen: 0-0 (0x0-0x0) Mark: (0x0,0,0) Mark: 00/00/1900 00:00:00.000 Previous Differential Backup: Log Gen: 0-0 (0x0-0x0) Mark: (0x0,0,0) Mark: 00/00/1900 00:00:00.000 Current Full Backup: Log Gen: 0-0 (0x0-0x0) Mark: (0x0,0,0) Mark: 00/00/1900 00:00:00.000 Current Shadow copy backup: Log Gen: 0-0 (0x0-0x0) Mark: (0x0,0,0) Mark: 00/00/1900 00:00:00.000 cpgUpgrade55Format: 0 cpgUpgradeFreePages: 0 cpgUpgradeSpaceMapPages: 0 ECC Fix Success Count: none Old ECC Fix Success Count: none ECC Fix Error Count: none Old ECC Fix Error Count: none Bad Checksum Error Count: none Old bad Checksum Error Count: none Last checksum finish Date: 00/00/1900 00:00:00.000 Current checksum start Date: 00/00/1900 00:00:00.000 Current checksum page: 0 Operation completed successfully in 2.375 seconds.
Insbesondere der «State: Dirty Shutdown» lieferte den Beweis, dass mit der DB etwas nicht in Ordnung war. In diesem Falle muss die DB repariert werden. Dazu wird insbesondere folgendes benötigt: Diskspace! Und zwar mindestens 110% der DB-Grösse!
Nun prüfen wir zuerst, wie der Stand der Logfiles ist:
Die Befehle werden am einfachsten im Verzeichnis ausgeführt , in welchem sich die Logfiles befinden:
D:\ExchangeData\Mailbox\Mailbox Database xxx>"C:\Program Files\Microsoft\Exchange Server\V15\Bin\eseutil" /ML E00.log
Prüfung sämtlicher folgender Logfiles:
eseutil /ML E00
Der Output ist im Idealfall:
No damaged log files were found. Operation completed successfully in 100.797 seconds.
Prüfung des Checkpoint Files:
eseutil /MK E00.chk
Nun können wir ein Soft Recovery versuchen:
"C:\Program Files\Microsoft\Exchange Server\V15\Bin\ESEUTIL" /r E00 /l "D:\ExchangeData\Mailbox\Mailbox Database xxx" /d "D:\ExchangeData\Mailbox\Mailbox Database xxx"
Das Recovery konnte einige Logfiles einspielen, brach dann aber mit einem Fehler ab:
Operation terminated with the following error -1022 (Jet_errDiskIO, Disk IO error) after xx seconds.
Somit musste ich ein Hard Recovery ausführen:
"C:\Program Files\Microsoft\Exchange Server\V15\Bin\ESEUTIL" /P "D:\ExchangeData\Mailbox\Mailbox Database xxx\Mailbox Database xxx.edb"
Dies dauerte ca. eine Stunde in meinem Fall (DB Grösse von 100GB). Anschliessend muss ein Defrag ausgeführt werden:
"C:\Program Files\Microsoft\Exchange Server\V15\Bin\ESEUTIL" /d "D:\ExchangeData\Mailbox\Mailbox Database xxx\Mailbox Database xxx.edb"
Im Anschluss an diesem Befehl konnte ich die DB wieder mounten. Ein abschliessender Integ-Check steht noch aus.
Update 20.01.2020: ISINTEG gibts ab Exchange 2010 eigentlich nicht mehr, bzw. funktioniert nicht mehr. Die DB muss ab Exchange 2010 Online (mounted) sein, und kann dann mit folgendem Befehl überprüft werden:
Nachtrag: mit diesem Befehl lässt sich die DB überprüfen:
[PS] C:\>New-MailboxRepairRequest -Database "Mailbox Database xxx" -DetectOnly -CorruptionType ProvisionedFolder, SearchFolder,AggregateCounts,Folderview | fl
Es ist zwingend «FL» am Ende zu verwenden, da der Request sonst nicht wiederauffindbar ist. Mit diesem Befehl kann der Status überprüft werden:
Get-MailboxRepairRequest ID von Oben\ID von Oben | fl