stuck stuck - 18 days ago 5
C++ Question

How to do a Extensible Storage Engine (JetBlue) repair in code?

I'm using ESE (JetBlue) in an app, when JetAttachDatabase is called it returns JET_errDatabaseDirtyShutdown. What am I supposed to do in my app? my desire is for any uncommeted transactions to be deleted

Answer

Log recovery will be done automatically by the call to JetInit, which will automatically rollback uncomitted transactions. In order for JetInit to work it has to find the logfiles so in this case you have probably either:

  1. Deleted the logfiles. Don't do that.
  2. Didn't set the logfile path correctly. Always set the same logfile path when initializing so that ESE can find the logs.
  3. Moved the database. The logs contain a hard-coded path to the database so moving the database breaks recovery. To deal with this you can set the alternate recovery path system parameter to the directory containing the database.