Microsoft KB Archive/318161

= &quot;Could not find installable ISAM&quot; (0x80004005) error message when you try to set session-level Jet properties =

Article ID: 318161

Article Last Modified on 11/28/2007

-

APPLIES TO


 * Microsoft ADO.NET 2.0
 * Microsoft ADO.NET (included with the .NET Framework)
 * Microsoft ActiveX Data Objects 2.5
 * Microsoft ActiveX Data Objects 2.6
 * Microsoft ActiveX Data Objects 2.7
 * Microsoft OLE DB Provider for Jet 4.0

-



This article was previously published under Q318161



Caution ADO and ADO MD have not been fully tested in a Microsoft .NET Framework environment. They may cause intermittent issues, especially in service-based applications or in multithreaded applications. The techniques that are discussed in this article should only be used as a temporary measure during migration to ADO.NET. You should only use these techniques after you have conducted complete testing to make sure that there are no compatibility issues. Any issues that are caused by using ADO or ADO MD in this manner are unsupported. For more information, see the following article in the Microsoft Knowledge Base:

840667 You receive unexpected errors when using ADO and ADO MD in a .NET Framework application



SYMPTOMS
When you try to set custom, provider-specific properties for the Microsoft OLE DB Provider for Jet in the ADO OLE DB connection string, you receive the following error message:

Could not find installable ISAM

Error Code: 0x80004005 (or -2147467259)



CAUSE
The Microsoft OLE DB Provider for Jet includes many custom properties that you can set only after you establish a connection to the database. These provider-specific properties are custom OLE DB session properties. You cannot set these properties in the ADO OLE DB connection string; you must set these properties after the connection is opened.

This error occurs when you specify the following Jet-specific properties in the connection string:
 * Jet OLEDB:ODBC Command Time Out
 * Jet OLEDB:Max Locks Per File
 * Jet OLEDB:Implicit Commit Sync
 * Jet OLEDB:Flush Transaction Timeout
 * Jet OLEDB:Lock Delay
 * Jet OLEDB:Max Buffer Size
 * Jet OLEDB:User Commit Sync
 * Jet OLEDB:Lock Retry
 * Jet OLEDB:Exclusive Async Delay
 * Jet OLEDB:Shared Async Delay
 * Jet OLEDB:Page Timeout
 * Jet OLEDB:Recycle Long-Valued Pages
 * Jet OLEDB:Reset ISAM Stats
 * Jet OLEDB:Connection Control
 * Jet OLEDB:ODBC Parsing
 * Jet OLEDB:Page Locks to Table Lock
 * Jet OLEDB:Sandbox Mode
 * Jet OLEDB:Transaction Commit Mode



RESOLUTION
In ADO 2.7 or earlier, you can set the provider-specific properties after you establish a connection to the database. For example: Dim cnn As New ADODB.Connection cnn.Open &quot;Provider=Microsoft.Jet.OLEDB.4.0;&quot; cnn.Properties(&quot;Jet OLEDB:Max Buffer Size&quot;) = 256 In ADO.NET, you cannot set OLE DB session-level, provider-specific properties. Because ADO.NET is a disconnected model, you do not typically have to set these properties unless you have a live connection to the database.



STATUS
This behavior is by design.



Reproduce the behavior in ADO 2.7 or earlier
The following ADO code reproduces the &quot;Could not find installable ISAM&quot; error: Dim cnn As New ADODB.Connection cnn.Open &quot;Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\db1.mdb;Jet OLEDB:Max Buffer Size=256;&quot;

Reproduce the behavior in ADO.NET
The following ADO.NET C# code reproduces the &quot;Could not find installable ISAM&quot; error: try {   OleDbConnection conn = new OleDbConnection(&quot;Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\\DB1.MDB;Jet OLEDB:Max Buffer Size=256;&quot;); conn.Open; } catch(OleDbException e) { MessageBox.Show(&quot;Error code= &quot;+ e.ErrorCode.ToString(&quot;X&quot;)+&quot;\nError Description=&quot;+e.Message); }

