The Microsoft Jet Database Engine is a database engine on which several Microsoft products were built. A database engine is the underlying component of a database, a collection of information stored on a computer in a systematic way. The first version of Jet was developed in 1992, consisting of three modules which could be used to manipulate a database.

JET stands for Joint Engine Technology , sometimes being referred to as Microsoft JET Engine or simply Jet . Microsoft Access and Visual Basic use or have used Jet as their underlying database engine. It has since been superseded, however, first by Microsoft Desktop Engine (MSDE), then later by SQL Server 2005 Express Edition and most recently by SQL Server 2005 Compact Edition. Jet is now part of Microsoft Windows and is no longer a component of Microsoft Data Access Components (MDAC). For larger database needs, Jet databases can be upgraded (or, in Microsoft parlance, "up-sized") to Microsoft's flagship database product, SQL Server 2005.

Over the years, Jet has become almost synonymous with Microsoft Access, to the extent where many people incorrectly refer to a Jet database as an "Access database". Even Microsoft themselves do this sometimes, but this nomenclature should always be seen as incorrect. Jet is a database and Access is a database application development tool (database builder).

Architecture

Jet allowed the manipulation of a relational database and was part of a Relational Database Management System (RDBMS). It offered a single interface that other software could use to access Microsoft databases and provided support for security, referential integrity, transaction processing, indexing, record and page locking, and data replication. In later versions, the engine was extended to be able to run SQL queries, store character data in Unicode format, create database views and allowed bi-directional replication with Microsoft SQL Server.

There were three modules to Jet: One was the Native Jet ISAM Driver , a dynamic link library (DLL) that could directly manipulate Microsoft Access database files (MDB) using Indexed Sequential Access Method (ISAM). Another one of the modules contained the ISAM Drivers , DLLs that allowed access to a variety of ISAM databases, among them being Xbase, Paradox, Btrieve and FoxPro. The final module was the Data Access Objects (DAO) DLL. DAO provided an API that allowed programmers to access JET databases using any programming language.

Locking

Jet allowed multiple users to access the database concurrently. To prevent that data from being corrupted or invalidated when multiple users tried to write to the database, Jet employed a data write locking policy. Any single user could only modify those database records (that is, items in the database) to which they had applied a lock that gave them exclusive access to the record until the lock was released. Up to Jet 4, a page locking model was used, and in Jet 4 a record locking model was employed. Microsoft databases are organized into data "pages", which are fixed length (2 kB before Jet 4, 4 kB in Jet 4) data structures that divide up the database. Data is stored in "records", but these are of variable length and so may take up less or more than one page. The page locking model worked by locking the pages, instead of individual records, which though less resource intensive also meant that more than one record might be locked at any one time.

There were two mechanisms that Microsoft used for locking: pessimistic locking , and optimistic locking . With pessimistic locking, the record or page is locked immediately when the lock is requested, while with optimistic locking, the update is delayed until all the editing operations on the record have been completed. Conflicts are less likely to occur with optimistic locking, since the record is locked only for a short period of time. However, with optimistic locking one cannot be certain that the update will succeed because another user could update the record first. With pessimistic locking, the update is guaranteed to succeed once the lock is obtained. Other users must wait until the update is made and the lock released in order to make their changes. Lock conflicts, which either require the user to wait, or cause the request to fail (usually after a timeout) are more common with pessimistic locking.

Transaction processing

Jet supported transaction processing for database systems that had this capability (ODBC systems had one level transaction processing, while several ISAM systems like Paradox did not have transaction processing capability). A transaction is a series of operations performed on a database that must be done together — this is known as atomicity and is a part of ACID (Atomicity, Consistency, Isolation, and Durability), concepts considered to be the key transaction processing features of a database management system. For transaction processing to work (until Jet 3.0), the programmer needed to begin the transaction manually, perform the operations needed to be performed in the transaction, and then commit (save) the transaction. Until the transaction is committed, changes are made only in memory and not actually written to disk. Transactions have a number of advantages over independent database updates. One of the main advantages is that transactions can be abandoned if a problem occurs during the transaction. This is called rolling back the transaction, or just rollback, and it restores the state of the database records to precisely the state before the transaction began. Transactions also permit the state of the database to remain consistent if a system failure occurs in the middle of a sequence of updates required to be atomic. There is no chance that only some of the updates will end up written to the database; either all will succeed, or the changes will be discarded when the database system restarts. With ODBC's in-memory policy, transactions also allow for many updates to a record to occur entirely within memory, with only one expensive disk write at the end.

Implicit transactions were supported in Jet 3.0. These are transactions that are started automatically after the last transaction was committed to the database. Implicit transactions in Jet occurred when an SQL DML statement was issued. However, it was found that this had a negative performance impact in 32 bit Windows (Windows 95, Windows 98), so in Jet 3.5 Microsoft removed implicit transactions when SQL DML statements were made.

JET 4.0

Data integrity

Jet enforces entity integrity and referential integrity. Entity integrity is one of the key concepts of relational databases, and ensures that no record is able to be duplicated and also ensures that no field (or group of fields) that identify the record (the primary key) are NULL. Thus, Jet supports primary keys. Referential integrity is where the fields that identify data that exist in a database table (the foreign key) must correspond with an existing primary key in that database. If a foreign key value exists that does not have a corresponding primary key in the referenced table, then the referential integrity is broken and the data between tables will no longer be synchronised.

For instance, a music lover may have a database that stores information about a record collection, and need to store data about an artist and his/her music. In this example, the artist can record many albums, but the album is only recorded by one artist, so two database tables are created: Artist and Album . The Artist table uses the field artist_id as its primary key, and the Album table uses album_id . The album table references the artist table using artist_id as a foreign key. If, for some reason, an artist is deleted and there is an album in the system that contains a reference to that artist then the referential integrity of this record would be broken. Jet will by default prevent this from happening. Jet is also capable of doing cascading updates and deletes. With cascading deletes enabled for the Album table, if the artist in the previous example were deleted, then all the artists' albums would also be deleted.

Jet also supports "business rules" (also known as "constraints"), or rules that apply to any column to enforce what data might be placed into the table or column. For example, a rule might be applied that does not allow a date to be entered into a date_logged column that is earlier than the current date and time, or a rule might be applied that forces people to enter a positive value into a numeric only field.

Security

Access to Jet databases is done on a per user-level. The user information is kept in a separate system database, and access is controlled on each object in the system (for instance by table or by query). In Jet 4, Microsoft implemented functionality that allowed database administrators to set security via the SQL commands CREATE, ADD, ALTER, DROP USER and DROP GROUP. These commands were a subset of ANSI SQL 92 standard, and they also applied to the GRANT/REVOKE commands. When Jet 2 was released, security could also be set programmatically through DAO.

Queries

Queries are the mechanisms that Jet uses to retrieve data from the databas

msaccess.exe needed to link drawings?

I get the following error: "The application has failed to start because msaccess.exe was not found. Re-installing the application may fix the problem."

...

ACC97: Invalid DAO Reference Causes an IPF in MSACCESS.EXE

An application error has occurred and an application error log is being generated. MSACCESS.EXE

...

Type mismatch error while installing a localized MS-Access 2000 ...

Type mismatch error while installing a localized MS-Access 2000 application. Symtom: While running setup.exe to install an MS-Access application, the following error message appears ...

...

File Extension .MDB Details

When windows gives you an error message saying that ... The Mime types used with this association are: application/x-msaccess ... Application, AppName: Microsoft Access EXEFile: MSACCESS.EXE

...

Access Application Error - Toolbox for IT Groups

Hi Experts,Does any body know why the following error occurs.MSACCESS.EXE - Application Error: The instruction at ...

...

Application Errors - Memory

Microsoft Access:MSACCESS.EXE - Application Error The instruction at "0x77f92373" referenced memory at "0x004503ab". The memory could not be "written".

...

IEXplore.exe - Application Error The memory could not be "read ...

MS Access; MS SQL Server; MySQL Server; OLAP; Oracle; PostgreSQL; Reporting ; SAS; Siebel ... any sulation to fix that (IEXplore.exe - Application Error The memory could not be "read") plz ...

...

msaccess.exe - msaccess, Ms Access, Delete and Removal Information!

msaccess.exe is an application that does NOT appear to be a security risk ... 0x800a0007 Windows Update Error; CMDExe Exploit; Bump Key; Remove Virtumonde; DSO ...

...

ACC95: Startup Form Causes IPF in MSACCESS.EXE

An application error has occurred and an application error log is being generated. MSACCESS.exe

...

Manifold Community Site: msaccess.exe needed to link drawings?

I get the following error: "The application has failed to start because msaccess.exe was not found. Re-installing the application may fix the problem."

...