Next Topic

Previous Topic

Home

Book Contents

Book Index

How to repair a corrupted Master Client Database

This topic Applies to 32bit Version 2.9 onwards

Netwiz strongly recommends that MonTel be used with an SQL back end or the freely supplied MSDE (available for Netwiz clients by web download). This topic provides a possible solution for those sites that have not made the switch to an SQL database, and are experiencing database corruption.

The best fix is to upgrade MonTel to use MSDE or SQL Server. The MonTel upgrade is free to clients on current maintenance. Not only will this update reduce database corruption to practically nil, but because MonTel was originally written with SQL in mind, updates will be 10 to 20 times (or more) faster than versions using the Jet engine Master Client Database.

Older versions of the MonTel Master Client Database uses the Jet database Engine, which is the same engine that drives MS Access 97. Sometimes the database can become corrupted and needs to be repaired. This repair can often be performed from within MonTel, providing that MonTel can at least open the database. If this is not possible, you may still be able to repair the corruption using the MS Utility JETCOMP.exe. See below for a list of some applicable errors.

JET COMP Information from the MS Web Site.

http://support.microsoft.com/support/kb/articles/Q172/7/33.asp

Jetcomp.exe is a stand-alone utility that allows you to compact databases created with Microsoft Jet database engine 3.x. This utility may be used in conjunction with Microsoft Jet database engine 3.51 for recovering corrupted databases. Although it is possible to use the Microsoft Access Compact utility or the CompactDatabase method with Microsoft Jet database engine 3.51, Jetcomp.exe may be able to recover some databases that these utilities could not. This is because the Microsoft Access Compact utility and the CompactDatabase method attempt to open and close a database before attempting to compact it. In certain cases where these utilities may not be able to reopen the database, Compact will be unable to proceed, preventing recovery of the database. Jetcomp.exe does not attempt to open and close the database before compacting, and may be able to recover some databases that the Microsoft Access compact utility and the CompactDatabase method could not.

Jetcomp.exe is a freely distributable utility, but requires that you have the products listed on the Microsoft web site or MonTel installed on your computer.

MonTel uses the latest Jet 3.51 file from Version 2.9 onwards.

How to use JET COMP

  1. Make sure that all users are out of the MonTel client. (See How to make MonTel or Notify automatically restart after an Admin shut down for how to do this from the PABX.INI file)
  2. Rename the Master Client Database to PROB.MDB
  3. Run JetComp.exe from the MonTel Application/support directory.
  4. Enter the full path (MonTel Datadirectory/CLIENTDB) and name to PROB.MDB in Database to Compact From (Source): field.
  5. Enter the full path (MonTel Datadirectory/CLIENTDB) and name ([ClientDB] section ClientDatabaseName + ".MDB") which is likely to be CLIENT32.MDB
  6. Do not change any of the other fields.
  7. Press the Compact Button.

    If this succeeds, allow the other users back in to MonTel.

    If this fails you will need to restore CLIENT32.MDB (or whatever it is named) from you nightly backup.

  8. (You can delete PROB.MDB).

Errors Encountered in Earlier Versions of the Microsoft Jet Database Engine

(This section is extracted from documentation supplied with Jetcomp.)

In the course of using Microsoft Jet database engine 3.X, users may have encountered the following errors.

Error #

Error Description

3197

The Microsoft Jet database engine stopped the process because you and another user are attempting to change the same data at the same time.

3343

Unrecognised database format 'databasename.mdb'.

3015

'databasename.mdb' isn't an index in this table. Look in the Indexes collection of the TableDef object to determine the valid index names.

These errors typically relate to some form of corruption in the database. Error 3015 resulted in the Jet database engine not being able to gain access to the database. Error 3343 required the user to run the Jet database engine repair utility.

Below is a description of what the errors really signified.

Error #

Error Description

Cause/Problem

3197

The Microsoft Jet database engine stopped the process because you and another user are attempting to change the same data at the same time.

This error typically occurs when a long value column (an OLE or MEMO data-type) has bad data stored in it. Long value columns are typically stored in a separate page from the page that the row is stored in. If a long value column is present in the table schema, the Jet database engine will attempt to read the long value page when reading the row of data. In order to read the long value page, there is a pointer in the row of data. This error is generated when the Jet database engine cannot properly read the long value page from the pointer present in the data row. When viewing a row that exhibits this behaviour in Microsoft Access data-windows, the user will typically see the number sign (#) for the entire row.

3343

Unrecognised database format 'databasename.mdb'.

This is typically caused when the Jet database engine was improperly shut down during the process of writing to disk.

3015

'databasename.mdb' isn't an index in this table. Look in the Indexes collection of the TableDef object to determine the valid index names.

This error message is typically caused when there is an index missing on the MSysObjects table. This is typically caused if the repair process is aborted.

In order to remedy these problems, Microsoft Jet database engine 3.51 has enhanced its compact process. With Microsoft Jet database engine 3.51, all of the errors described above will be eliminated and repaired if possible. Compact now assumes all the functionality that the Jet database engine repair process included and it is no longer recommended that you use the Jet database engine repair process.

Compact should always be run on a regular basis because it creates a new database with the data and tables in contiguous and sorted order. It also refreshes the statistics in the database and causes all stored queries to recompile. Ultimately, this reduces the size of the database and can significantly increase performance.

The latest version of AutoImport and AutoExport can be set to compact the database, providing that can gain exclusive access to the database (meaning that no user is currently in MonTel). You should only set one of the these to run the compaction. It is assumed that these programs are running late a night, as part of a batch file. See AutoExportCompactMasterClientDB or AutoImportCompactMasterClientDB.

------------------------------