locked
The 'Microsoft.ACE.OLEDB.14.0' provider is not registered on the local machine. RRS feed

  • 问题

  • I was using a C# helper class code to connect to an Excel file using JET OLEDB 4.0. It is working good in my local XP and dev Win Serv 2003 sp2 standard edition. When we deployed the code to out Test env which is running 64bit BizTalk host, it fails as JET OLEDB 4.0 is not available for 64 bit process.
    I downloaded 2010 Office System Driver Beta from http://www.microsoft.com/downloads/details.aspx?familyid=C06B8369-60DD-4B64-A44B-84B371EDE16D&displaylang=en#Requirements and installed the x86 into my XP as well as Win2003server(SP2) standatd edition. It was running good in my XP with "'Microsoft.ACE.OLEDB.14.0" connection string, but the same doent work on Win2003server(SP2) standatd edition and I am getting this error - "The 'Microsoft.ACE.OLEDB.14.0' provider is not registered on the local machine."
    Now, I doubt that my code will work on my testing env (which runs with 64bit processor) even if x64 installable of 2010 Office System Driver Beta is installed on my TEST env. Any clue for me?
    • 已移动 Riquel_Dong 2010年3月5日 6:14 this is off-topic in 64Bit .NET development (From:64-Bit .NET Framework Development.)
    2010年2月26日 14:58

答案

全部回复

  • There are no ACE drivers for 64-bit processes.

    You can install MS Office (or the ACE redist) onto a 64-bit machine, but it will only work for 32-bit processes. 64-bit processes cannot use the ACE drivers.

    I'm not familiar with BizTalk as a host; if you have the option of giving it 32-bit code, then change your targeted CPU to x86 and you'll be all set. If your code has to be 64-bit, then you'll have to create a separate 32-bit process to talk to the Excel file and use IPC for communication betweeen your 64-bit hosted code and 32-bit Excel file reader process.

           -Steve


    Programming blog: http://nitoprograms.blogspot.com/
      Including my TCP/IP .NET Sockets FAQ
      and How to Implement IDisposable and Finalizers: 3 Easy Rules
    Microsoft Certified Professional Developer

    How to get to Heaven according to the Bible
    2010年2月26日 15:13
  • Steve,
    Thanks for your inputs.
    In BizTalk, I always have the option to execute my code with a separate 32bit BizTalk Host instance for that particualr orchestration which should solve my problem. But if you look at this link where microsoft published the beta driver which have 64 bit support - http://www.microsoft.com/downloads/details.aspx?familyid=C06B8369-60DD-4B64-A44B-84B371EDE16D&displaylang=en#Requirements it clearly tell that ACE drive is going work for 64 bit. But in my case it doesnt work.

    Thx,
    Ritesh
    2010年2月26日 16:19
  • Those requirements describe the operating systems on which it can be installed. There is a 64-bit redistributable (for 64-bit operating systems), but it does not say the drivers support 64-bit processes.

            -Steve
    Programming blog: http://nitoprograms.blogspot.com/
      Including my TCP/IP .NET Sockets FAQ
      and How to Implement IDisposable and Finalizers: 3 Easy Rules
    Microsoft Certified Professional Developer

    How to get to Heaven according to the Bible
    2010年2月26日 16:40
  • I'm just in the process of converting my app to be able to support text importing via "OPENROWSET" in 64 bit SQL Server using the Beta MICROSOFT.ACE.OLEDB.14.0 drivers.  I've previously used the MICROSOFT.ACE.OLEDB.12.0 drivers but of course these only work on 32 bit instances of SQL Server. 

    I've found that after I've installed the beta that the connections wont work if I use MICROSOFT.ACE.OLEDB.14.0 as the provider.  However if I use MICROSOFT.ACE.OLEDB.12.0 it works... sort of... I can import data a few times then I get a "The provider reported an unexpected catestrophic failure" error and the app hangs.

    My environment is 64-bit Windows 7 running VM Workstation, with a 64-bit Windows 7 guest running SQL Server 2008 64 Bit.  Essentially I'm running the following which works... occasionally getting the failure above

     select top 50 * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0','Text;Database=c:\temp\captell;HDR=Yes', 'SELECT * FROM [DASDGIGS0013046591395.TXT]')

    and

     select top 50 * FROM OPENROWSET('Microsoft.ACE.OLEDB.14.0','Text;Database=c:\temp\captell;HDR=Yes', 'SELECT * FROM [DASDGIGS0013046591395.TXT]')

    Which doesn't work, returning the "OLEDB provider ... has not been registered" message.

    So I'm thinking that the drivers are 64-bit drivers but the registration process during installation is using the 12.0 name.
    2010年2月27日 16:32
  • Hi AdrianHeald,

    This is beta product. We don't support its usage in this stage. If you find the issues of this product, you can report this to connect forum:
    http://connect.microsoft.com/

    In current situation you can make the project to target X86. Then fetch data from EXCEL worksheet. Please consider Steve's advice.
    Best regards,
    Riquel
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.
    Welcome to the All-In-One Code Framework! If you have any feedback, please tell us.
    2010年3月2日 8:44
  • Thanks for that I will report it to http://connect.microsoft.com/ .

    My point in replying to this was that the MICROSOFT.ACE.OLEDB.14.0 is in face a 64 bit driver and does work for 64 bit processes apart from a few bugs.  Steve seemed to indicate that if wasn't for 64 bit processes.
    2010年3月2日 19:46
  • If you can use that Driver in 64Bit process, this driver should be 64Bit version. 64Bit process can't use 32Bit DLL and any COM component due to the different memory address usage. Please see this article about some difference between 32Bit and 64Bit for .NET developers:
    http://msdn.microsoft.com/en-us/library/ms973190.aspx
    Best regards,
    Riquel
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.
    Welcome to the All-In-One Code Framework! If you have any feedback, please tell us.
    2010年3月3日 5:59
  • Hi there,
      I think you are missing my point.

      I have a 64Bit instance of SQL Server running on 64Bit Windows 7.

    In SQL Server I want to run the following query

     select top 50 * FROM OPENROWSET('Microsoft.ACE.OLEDB.14.0','Text;Database=c:\temp\captell;HDR=Yes', 'SELECT * FROM [DASDGIGS0013046591395.TXT]')

    Beacuse SQL Server is 64bit it NEEDS the 64bit oledb drivers, My application is 32 bit but that doesn't really matter in this case because it's not my application making the 64bit call, its SQL Server.

    PS: I went looking at http://connect.microsoft.com/  and couldn't find an appropriate place to post this bug report, do you know where I should be posting?

    Adrian.


    2010年3月3日 18:53
  • Please post the issues to Office 2010 Beta forum for better help. This question is related to 64Bit driver usage. It isn't a question of .NET 64 Bit application development.
    http://social.technet.microsoft.com/Forums/en/category/office2010
    Best regards,
    Riquel
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.
    Welcome to the All-In-One Code Framework! If you have any feedback, please tell us.
    2010年3月5日 3:18
  • This makes sense, and it's common to get flows for beta software. hope Steve can get more information before answer some new stuff. cauz you guys are helpers to the new techs, some misleading will turned them down lots.

    Thanks to AdrianHeald , you helped me on how to using this 14 drivers.

    2010年4月20日 17:46