RepairDatabase Method

See Also    Example    Applies To

Attempts to repair a corrupted Microsoft Jet database (Microsoft Jet databases only).

Syntax

VOIDRepairDatabase(LPCTSTR pstrDatabase );

Parameters

Type Argument Description
LPCTSTR pstrDatabase A pointer to a string that contains the path and file name of an existing Microsoft Jet database file. If you omit the path, only the current directory is searched. If your system supports the uniform naming convention (UNC), you can also specify a network path, such as "\\server1\share1\dir1\db1.mdb".

Remarks

You must close the database specified by pstrDatabase before you repair it. In a multiuser environment, other users can't have pstrDatabase open while you're repairing it. If pstrDatabase isn't closed or isn't available for exclusive use, an error occurs.

This method attempts to repair a database that was marked as possibly corrupt by an incomplete write operation. This can occur if an application using the Microsoft Jet database engine is closed unexpectedly because of a power outage or computer hardware problem. The database won't be marked as possibly corrupt if you use the Close method or if you quit your application in a usual way.

The RepairDatabase method also attempts to validate all system tables and all indexes. Any data that can't be repaired is discarded. If the database can't be repaired, a run-time error occurs.

When you attempt to open or compact a corrupted database, a run-time error usually occurs. In some situations, however, a corrupted database may not be detected, and no error occurs. It's a good idea to provide your users with a way to use the RepairDatabase method in your application if their database behaves unpredictably.

Some types of databases can become corrupted if a user ends an application without closing CdbDatabase or CdbRecordset objects and the Microsoft Jet database engine; Microsoft Windows doesn't have a chance to write data caches to disk. To avoid corrupt databases, establish procedures for closing applications and shutting down systems that ensure that all cached pages are saved to the database. In some cases, power supplies that can't be interrupted may be necessary to prevent accidental data loss during power fluctuations.

Note After repairing a database, it's also a good idea to compact it using the CompactDatabase method to defragment the file and to recover disk space.

Usage

#include <afxole.h>
#include <dbdao.h>
CdbDBEngine   dben;
...                     // Attempt to repair a local database
dben.RepairDatabase(_T("db1.mdb"));