"Could not find installable ISAM" (0x80004005) error message when you try to set session-level Jet properties (318161)



The information in this article applies to:

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

This article was previously published under Q318161

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 "Provider=Microsoft.Jet.OLEDB.4.0;"
cnn.Properties("Jet OLEDB:Max Buffer Size") = 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.

MORE INFORMATION

Reproduce the behavior in ADO 2.7 or earlier

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

Reproduce the behavior in ADO.NET

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

REFERENCES

For more information about provider-specific properties for the Microsoft OLE DB Provider for Jet, see the following Microsoft Web site:

Modification Type:MajorLast Reviewed:3/13/2006
Keywords:kbJET kbprb KB318161 kbAudDeveloper