RepairDatabase Method

Applies To

DBEngine object.

Description

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

Syntax

DBEngine.RepairDatabase dbname

The dbname argument is a String that is the path and file name for 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 dbname before you repair it. In a multiuser environment, other users can't have dbname open while you're repairing it. If dbname 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 Database or Recordset 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.

See Also

Close method, CompactDatabase method, Database object.

Example

This example attempts to repair the database named Northwind.mdb. You cannot run this procedure from a module within Northwind.mdb.

Sub RepairDatabaseX()

    Dim errLoop As Error

    If MsgBox("Repair the Northwind database?", _
            vbYesNo) = vbYes Then
        On Error GoTo Err_Repair
        DBEngine.RepairDatabase "Northwind.mdb"
        On Error GoTo 0
        MsgBox "End of repair procedure!"
    End If

    Exit Sub

Err_Repair:

    For Each errLoop In DBEngine.Errors
        MsgBox "Repair unsuccessful!" & vbCr & _
            "Error number: " & errLoop.Number & _
            vbCr & errLoop.Description
    Next errLoop

End Sub