Transaction management and crash recovery is built into the database engine. There is no offline utility to run after a crash. Instead, when the database engine is started, integrity checking occurs automatically. In single user mode, starting the database occurs when the application invokes the database connection call (either via ODBC or via the CQL C++ API). In client/server mode, starting the database means starting the server. If the application (or server) was shut down normally, the startup code will detect this and no crash recovery will be attempted. If, however, the normal shutdown entries are not found in the transaction logs, the system will automatically initiate recovery, and the database will be restored to the state as of the last committed transaction. With the server, transactions for all users will be checked and all data files are restored to a consistent state conforming to the last committed transaction.