none
Microsoft Jet OLEDB 4.0 STILL not working on 64-Bit?

    Question

  • I've seen all the posts (hundreds of them) concerning the fact that the Microsoft Jet OLEDB 4.0 provider only works on 32-Bit systems.  Really?  I'm running Windows Server 2008 Data Center and have an urgent need to run an SQL Job that needs to query an Access database.  The job runs DTExec to execute an SSIS package (the Job step is configured with the "Use 32 bit runtime" checked (set to true)).  I am getting the follwing error message when I'm on the part of the SSIS package, which is an 'Execute SQL Task', which attempts to open the Access Database: 

    DTExec: The package execution returned DTSER_FAILURE (1).
    Started:  2:31:08 PM
    Finished: 2:31:12 PM
    Elapsed:  4.438 seconds
    Microsoft (R) SQL Server Execute Package Utility
    Version 10.0.1787.0 for 32-bit
    Copyright (C) Microsoft Corp 1984-2005. All rights reserved.

    Started:  2:37:14 PM
    Error: 2009-04-30 14:37:19.13
       Code: 0xC002F210
       Source: DoDeletes Execute SQL Task
       Description: Executing the query "DELETE From [dbo].[zsong] where [MUZENBR] in (
    SE..." failed with the following error: "The OLE DB provider "Microsoft.Jet.OLEDB.4.0" has not been registered.". Possible failure reasons: Problems with the query, "ResultSet" property not set correctly, parameters not set correctly, or connection not established correctly.
    End Error
    DTExec: The package execution returned DTSER_FAILURE (1).
    Started:  2:37:14 PM
    Finished: 2:37:19 PM
    Elapsed:  4.422 seconds

    I find it highly ridiculous that Microsoft would not care to release a 64-bit driver for Jet OleDb 4.0.  There is obviously a need, judging by the hundreds of posts out there with people asking about this.

    Or am I missing something?  Is there a driver that I just can't find?

    Thanks.
    • Edited by timorris Thursday, April 30, 2009 8:07 PM
    Thursday, April 30, 2009 7:54 PM

Answers

  • The Jet OLEDB provider consists of several dlls. You can check if these dlls are installed.
    For x64 machines, the 32-bit folder where I expect they live is C:\Windows\Syswow64 or C:\Winnt\Syswow64

    This list (taken from http://support.microsoft.com/kb/278604) seems to cover the Jet dlls:

    Microsoft Jet 4.0 OLE DB Provider
    Provider=Microsoft.Jet.OLEDB.4.0
    C:\WINNT\System32\Msjetoledb40.dll
    C:\WINNT\System32\Msjet40.dll
    C:\WINNT\System32\Mswstr10.dll
    C:\WINNT\System32\Msjter40.dll
    C:\WINNT\System32\Msjint40.dll

    This article tells how to see if Jet is installed, and which version is installed, and how to get the latest service pack 8 http://support.microsoft.com/kb/239114/

    However, that kb 239114 it says "For computers that are running Windows Server 2008" If you are running Windows Server 2008, you have a later version of Jet 4.0 than the version that is included with Jet 4.0 SP8.

    If you don't find Jet is installed correctly, I am not totally sure what to do - sounds like Windows is not installed completely, or the feature was not enabled in the add/remove windows components.

    Indeed Jet is only 32-bit as Todd mentioned http://support.microsoft.com/kb/957570

    Since Jet is included with the OS I expect the install to have been done by one of the *.inf files in the C:\Windows\inf. I found several inf files on my Win 7 machine (not a good comparison for you) which cover these dlls such as (syssetup.inf, layout.inf, oem33.inf). I know it is possible to right click and run the install on these .inf files, but since its a windows component, it would be reinstalling windows components too, which I would recommend against on a production server, escpecially a datacenter edition! Must be a high end production server, so I can't recommend you do that because I'm afraid it would break something else because I haven't tested it before.

    Let us know if you find the dlls or not.

    Best wishes, JasonH
    Didn't get enough help here? Submit a case with the Microsoft Customer Support team for deeper investigation - http://support.microsoft.com/select/default.aspx?target=assistance
    Friday, May 01, 2009 3:26 AM

All replies

  • Jet isn`t supported on 64-bit, and AFAIK Microsoft has stated very clearly that it never will be.

    Your problem isn`t 64-bit.  You`re running the 32-bit version of DTEXEC, so there`s something else wrong with your setup.  Do you have Jet installed on that serverÉ
    Todd McDermid's Blog
    Thursday, April 30, 2009 9:28 PM
    Moderator
  • The Jet OLEDB provider consists of several dlls. You can check if these dlls are installed.
    For x64 machines, the 32-bit folder where I expect they live is C:\Windows\Syswow64 or C:\Winnt\Syswow64

    This list (taken from http://support.microsoft.com/kb/278604) seems to cover the Jet dlls:

    Microsoft Jet 4.0 OLE DB Provider
    Provider=Microsoft.Jet.OLEDB.4.0
    C:\WINNT\System32\Msjetoledb40.dll
    C:\WINNT\System32\Msjet40.dll
    C:\WINNT\System32\Mswstr10.dll
    C:\WINNT\System32\Msjter40.dll
    C:\WINNT\System32\Msjint40.dll

    This article tells how to see if Jet is installed, and which version is installed, and how to get the latest service pack 8 http://support.microsoft.com/kb/239114/

    However, that kb 239114 it says "For computers that are running Windows Server 2008" If you are running Windows Server 2008, you have a later version of Jet 4.0 than the version that is included with Jet 4.0 SP8.

    If you don't find Jet is installed correctly, I am not totally sure what to do - sounds like Windows is not installed completely, or the feature was not enabled in the add/remove windows components.

    Indeed Jet is only 32-bit as Todd mentioned http://support.microsoft.com/kb/957570

    Since Jet is included with the OS I expect the install to have been done by one of the *.inf files in the C:\Windows\inf. I found several inf files on my Win 7 machine (not a good comparison for you) which cover these dlls such as (syssetup.inf, layout.inf, oem33.inf). I know it is possible to right click and run the install on these .inf files, but since its a windows component, it would be reinstalling windows components too, which I would recommend against on a production server, escpecially a datacenter edition! Must be a high end production server, so I can't recommend you do that because I'm afraid it would break something else because I haven't tested it before.

    Let us know if you find the dlls or not.

    Best wishes, JasonH
    Didn't get enough help here? Submit a case with the Microsoft Customer Support team for deeper investigation - http://support.microsoft.com/select/default.aspx?target=assistance
    Friday, May 01, 2009 3:26 AM
  • This resolved this issue for me with a data source problem in SQL Server 2008 R2 Reporting Services (on a new windows 2008 R2 64 bit). We were using: Provider=Microsoft.Jet.OLEDB.4.0 on our old server and we were getting the Microsoft.Jet.OLEDB.4.0" has not been registered error.

    Install the following:http://www.microsoft.com/downloads/en/details.aspx?familyid=C06B8369-60DD-4B64-A44B-84B371EDE16D&displaylang=en  ( Microsoft Access Database Engine 2010 Redistributable) 64 bit version.

     

    To check that it installed correctly, create a new text document on the desktop and rename it to TEST.UDL. Right click the icon an select Properties and click the Provider tab. You should see a list of all OLE DB providers installed on the server.

    The first one should be Microsoft Office 12.0 Access Database Engine OLE DB Provider

    Change your connection to use this provider (i.e. Provider=Microsoft Office 12.0 Access Database Engine OLE DB Provider ;Data Source=.......)


    Hope this helps someone!


    Chris
    • Proposed as answer by mshyam85 Tuesday, August 28, 2012 4:35 AM
    Friday, September 17, 2010 12:25 PM
  • Good point.. Office 2010 (12) releases the first x64 bit provider “Microsoft.ACE.OLEDB.12.0” as you mentioned, which is very helpful for SSIS users since 32-bit and 64-bit are equally able to talk to Excel and Access databases.


    Didn't get enough help here? Submit a case with the Microsoft Customer Support team for deeper investigation - http://support.microsoft.com/select/default.aspx?target=assistance
    Friday, September 17, 2010 2:16 PM
  • Thanks for this, Chris - I owe you a beer.

    I already had Office 2010 installed, so all I had to do was change the connection string as per your post

    cheers

    pg

    Thursday, November 25, 2010 9:34 PM
  • Be aware of the disclaimer, though:
    The Access Database Engine 2010 Redistributable is not intended:

    1. As a general replacement for Jet (If you need a general replacement for Jet you should use SQL Server Express Edition).
    2. As a replacement for the Jet OLEDB Provider in server-side applications.

     

    So I guess this rules out using this in a true 64-bit production environment.

    Thursday, August 04, 2011 6:56 AM
  • Be aware of the disclaimer, though:
    The Access Database Engine 2010 Redistributable is not intended:

    1. As a general replacement for Jet (If you need a general replacement for Jet you should use SQL Server Express Edition).
    2. As a replacement for the Jet OLEDB Provider in server-side applications.

     

    So I guess this rules out using this in a true 64-bit production environment.


    Not to mention that BIDS itself is 32-bit, so you can't use the new ACE provider directly. :S
    MCTS, MCITP - Please mark posts as answered where appropriate.
    Answer #1: Have you tried turning it off and on again?
    Answer #2: It depends...
    Thursday, August 04, 2011 9:26 AM
  • I Have Installed ( Microsoft Access Database Engine 2010 Redistributable) 64 bit version and Office 2010 64 bit and also changed the connection string but I am having error like this

        System.Data.OleDb.OleDbException: Unspecified error

    [OleDbException (0x80004005): Unspecified error]
       System.Data.OleDb.OleDbConnectionInternal..ctor(OleDbConnectionString constr, OleDbConnection connection) +1823434
       System.Data.OleDb.OleDbConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject) +100
       System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup) +45
       System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection) +6275598
       System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) +6275911
       System.Data.OleDb.OleDbConnection.Open() +47
       PRPO.insertdata_Click(Object sender, EventArgs e) in c:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\LAYOUTS\folder\default.aspx.cs:82
       System.Web.UI.WebControls.LinkButton.OnClick(EventArgs e) +101
       System.Web.UI.WebControls.LinkButton.RaisePostBackEvent(String eventArgument) +100
       System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +29
       System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +2981


    regards, paul

    Monday, August 27, 2012 9:44 AM
  • Hi Paul,

    You may be a bit off topic for this thread. Are you using SSIS, or SSRS?  Keep in mind that accessing files from a web server is strictly unsupported, and they give a warning in the ACE download page to say that it is not meant for a server side usage. Its only mean for desktop applications, and importing/exporting of data (SSIS).

    You are getting the error from the OLEDB provider when clicking on a link in the web app which opens a connection to a data source.

    Is the web app 64-bit or 32-bit? If it is a web site, you can look at task manager and see if the w3wp.exe has a * beside it or not (asterisks means 32-bit). The host process has to be 64-bit to match the ACE provider installation.

    You need to test the provider outside of the application on the server to ensure it is installed and working. You can make a text file, rename the .txt extension --> .udl extension, and use the data access wizard to point to an Access or Excel file and test it the connection.

    You also need to understand which account is hosting the application, so that the dlls and the Data file can be read in without getting Access Denied. Running process monitor will should you if the .dll is getting loaded, or if there is an Access Denied or Not Foudn error. Process Monitor will show several failures before having success on each file that loads, since Windows searches several folders to find files when loading dlls and assemblies.

    Thanks, Jason


    Didn't get enough help here? Submit a case with the Microsoft Customer Support team for deeper investigation - http://support.microsoft.com/select/default.aspx?target=assistance

    Monday, August 27, 2012 3:10 PM
  • I'm one of those hundreds of posts that have applications that read and write to Access databases, in this case Access 2007, on a Windows 7, 64-bit platform.  Rebuilding these apps for x86 is quite the task, and hasn't been working as easily as its stated.  Even reconfiguring each user's machine is going to be a task.  I don't see additional posts by timorris on this thread, has he given up as well?

    Has the solution stated above, installing the 64-bit  Microsoft Access Database Engine 2010 Redistributable, been tested on a Windows 7 64-bit platform with Access 2007, by Microsoft?  For each of our users, this requires uninstalling the 32-bit Office (2007 in our case), installing the redistributable and then reinstalling the 32-bit Office. 

    I have searched for the Microsoft Jet 4.0 OLE DB Provider mentioned above on my machine, and found these files: Msjetoledb40.dll, Msjet40.dll, Mswstr10.dll, Msjter40.dll and Msjint40.dll, all in C:\Windows\SysWOW64. 

    Following the directions to check the version installed, I get 4.00.9756.0 for msjet40.dll.  Using the test.udl check, there are no OLE DB providers for Access (yes, I realize that is the problem).

    Is there a way to circumvent the unstall/reinstall solution to my workgroups 14 machines, my sections' 100+ machines, my Division's 800+ machines or the State's 32,000+ machines with the potential of a Windows 7, 64-bit platform that have applications that need to interact with Microsoft 32-bit Office applications?

     


    Harry Vermillion Colorado Parks and Wildlife Aquatic Reseach - Fort Collins

    Thursday, December 20, 2012 12:32 AM
  • Hi,

    I'm afraid it'd be cheaper to convert those MS-Access databases to a centralized SQL Server database, than to deal with such a massive uninstall/reinstall process.


    Sebastian Sajaroff Senior DBA Pharmacies Jean Coutu

    Thursday, December 20, 2012 2:12 PM
  • You're a life saver 'CL2837882'.  Serious man, owe you beers.
    • Edited by camtin Wednesday, May 14, 2014 8:01 PM
    Wednesday, May 14, 2014 8:01 PM