Help me, please! I have a database (Microsoft Exchange) in dirty shutdown (database, logs, checkpoint files) I can recover it using JetInit function, but it affects the original files.
- Is there a way to recover this base at some new location with JetAPI without changing original files, or if I have read-only access to them?
- Is there a way to bring the base to consistent state if there are no log files, but base is in ditry shutdown.
No, you'll need to copy at least the database to another location. You can refer to the logs in the origin location. You can either use
JetInit3
and specify a Restore Map (the arguments can be a bit finicky to get right, though), oreseutil -r
, using the-l
,-s
, and-d
options to specify the log file path, system path (checkpoint), and database path.The log files are absolutely necessary to get it to a clean state losslessly. If you want to get something out of it, then use
eseutil -p
(called "rePair", but it should really be "salvage"), which ruthlessly deletes data if there are any inconsistencies. It is designed with the premise of "Something is better than nothing", and it could easily result in a database that Exchange won't be able to do anything with. You may be lucky, or you may be unlucky. There are (used to be?) third party products that specialized in this sort of data recovery.