Microsoft Jet Version 3.5

Version 3.5 was released in the fall of 1996 with Microsoft Office 97. A sampling of the new features in version 3.5 is summarized in the following table.

Feature Description
Reduction in database growth When using Microsoft Jet 3.0, some users experienced unusual database growth, especially when manipulating modules in Microsoft Access. In Microsoft Jet 3.5, database growth has been substantially reduced as a result of changes to the way Microsoft Jet recycles long value pages.
Programmatic changes to Windows registry settings at run time DAO now exposes the SetOption method of the DBEngine object. SetOption method features don’t permanently change values, but allow the developer to change specified values at run time to “tune” the application for optimal performance. It’s no longer necessary to change registry settings on each machine or point to shadow registries.
Improved interoperability with Novell NetWare Microsoft Jet 3.5 resolves a previous problem with NetWare’s 10,000 lock limit by introducing a new registry setting called MaxLocksPerFile. By default, this setting splits transactions and partially commits them when 9500 locks are placed, thus allowing large rowset operations to complete.
Programmatic refreshing of data To improve performance, Microsoft Jet 3.0 would check to see if data had changed before refreshing its internal cache. This provided a significant performance improvement for a shared database and brought performance close to that of a database opened exclusively. The down side of this was that users would wait by default five seconds before seeing other user’s changes. To remedy this situation in Microsoft Jet 3.5, DAO exposes a new option off the Idle method of the DBEngine object called dbRefreshCache that causes Microsoft Jet to refresh its cache. This allows developers to refresh the cache on demand, while still getting the best performance benefits.
Programmatic purging of write commands to disk Microsoft Jet issues write commands to the operating system and occasionally, when code explicitly says to commit a transaction, the data will not have actually been written to disk. DAO now exposes a new option for the CommitTrans method, called dbForceOSFlush, which forces the operating system to immediately write the Microsoft Jet transaction to disk.
Performance improvements Implicit transactions were removed for all SQL data manipulation language (DML) statements to provide significant performance improvements for DML statements that affect many rows, by reducing the amount of I/O in the Microsoft Jet temporary database.
New caching mechanism Microsoft Jet is now able to use the maximum amount of cache space without causing concurrency issues. This results in substantial performance improvements when Microsoft Jet is manipulating a large number of records.
Improved locking mechanism Microsoft Jet 3.5 uses fewer locks when reading long value (LV) pages (pages that store fields with the OLE Object or Memo data types). The use of fewer locks can significantly improve concurrency in situations where users are simultaneously reading and updating data in Memo fields.
Improved query optimizer Microsoft Jet now optimizes more predicates for faster performance.
Remote data performance improvements The new MaxRecords property allows the user to specify a maximum number of records to retrieve from an ODBC server, regardless of the size of the result set.

The new FailOnError property (used for update and delete queries against a single table on an ODBC data source) sends the entire query to the server for processing when the property is set to No. This means that the query succeeds or fails in its entirety rather than allowing partial failures, which is the default behavior when the property is set to Yes.

Direct access to ODBC data sources without using Microsoft Jet DAO now supports access to remote data by using ODBCDirect. For the first time, you can bypass the Jet database engine and use DAO to access remote data directly. ODBCDirect establishes a connection directly to an ODBC data source without loading the Jet database engine in memory, and this is useful in situations where specific features of ODBC are required.
Partial replica support Replicas containing only a subset of the data contained in a full replica are now supported.
Replication over the Internet or an intranet Synchronization to and from replicas located on Internet or intranet servers is now supported through FTP and HTTP.
Access to data in HTML tables Importing, exporting, and making read-only links to HTML tables embedded in HTML pages are now supported.
Access to data in Microsoft Exchange folders Importing, exporting, and making append-only links to Microsoft Exchange message and address book folders are now supported.