Tuesday, August 12, 2008

MS Access- Interruption in Write Option Cause Corruption in Database

Since the Access database is a single mdb file, you can lose everything if it becomes corrupt. This is a rare occurrence if the database is running on reliable local area network and database objects are not being modified. You must avoid losing power during database writes. You should always properly quit Access by clicking Exit or Close on the File menu. If a database is open and writing data when Access is abnormally shut down, the Jet database engine may mark the database as suspect/corrupted. This can happen if you manually turn off the computer without first quitting Windows or if you lose power. Other situations can occur that do not shut down Access but that may still interfere with Jet writing data to the disk while the database is open. This can happen, for example, when networks experience data collisions or when disk drives malfunction. If any of these interruptions occur, Jet may mark the database as potentially corrupted. When Jet begins a write operation, it sets a flag, and it then resets the flag when the operation is complete. If a write operation is interrupted, the flag remains set. When you try to open that database again, Jet determines that the flag is set and reports that the database is corrupted. . In most cases, the data in the database is not actually corrupted, but the set flag alerts Jet that corruption may have occurred. In cases such as this, compacting or repairing the database can typically restore the database

Fortunately, there are ways to determine which user and workstation was responsible for marking the file as suspect. With Microsoft Visual Basic for Applications in Access, you can output a list of users who are logged into a specific database. It is difficult to determine which users/workstations are causing the file to be marked as suspect. When you troubleshoot to determine what is causing database corruption, you may have to see who is logged into the database. With Microsoft Visual Basic for Applications in Access 2002 or in Access 2003, you can access a list of users who are logged into a specific database. You can determine who is logged on to a database by using Microsoft Jet UserRoster in Access.

But as we know if database become corrupted before accessing a list of users so, how we will repair or recover our database. It may possible Jet compact utility may recover or repair our database but chances of this are very rare if database is corrupted due to write operation. In this scenario we require some other utility such as Stellar Phoenix access recovery utility which repairs our database as previous. This repair utility fixes all the errors that cause corruption in database by the full scan of database file. Access repair utility supports older version of MS access as well as newer version like 2007, 2003, 2002/XP, and 2000. This access repair software can do this repair for all the linked tables, forms, macros, modules, all the primary key fields and other constraints