Private deployment of SQL CE Ole Db

Answered Private deployment of SQL CE Ole Db

  • Tuesday, November 06, 2012 1:49 PM
     
     

    Hey Guys,

    I currently have a problem with the private deployment of the SQL Compact Edition 4.0 on 64bit machines using the ole db driver.

    I have built a C++ application which uses the OLE DB driver to connect to sql ce database. On 32bit operating systems I don’t have any problem with it. On 64bit operating system my test app raises an error called “The  Microsoft.SQLSERVER.CE.OLEDB.4.0' provider is not registered on the local machine.”.

    My deployment on the target 64bit machine looks like this.

    |amd64
    - |Microsoft.VC90.CRT
    - sqlceca40.dll
    - sqlcecompact40.dll
    - sqlceer40EN.dll
    - sqlceme40.dll
    - sqlceqp40.dll
    - sqlcese40.dll
    |x86
    - |Microsoft.VC90.CRT
    - sqlceca40.dll
    - sqlcecompact40.dll
    - sqlceer40EN.dll
    - sqlceme40.dll
    - sqlceqp40.dll
    - sqlcese40.dll
    - TestApp.exe
    - TestApp.pdb
    - xxxxxx.sdf
    - sqlceca40.dll (32bit version - registered with regsvr32)
    - sqlcecompact40.dll
    - sqlceer40EN.dll
    - sqlceme40.dll
    - sqlceoledb40.dll (32bit version - registered with regsvr32)
    - sqlceqp40.dll
    - sqlcese40.dll

    The connection string looks like this:
    Provider=Microsoft.SQLSERVER.CE.OLEDB.4.0;Data Source=xxxxxx.sdf

    Another thing I mentioned is that when I am trying to unregister (“regsvr32 sqlceoledb40.dll /u”) I get and 0x80004005 error which means that the dll can’t be unregistered.
    Complete Error: “The module sqlceoledb40.dll was loaded but the call to DllUnregisterServer failed with error code 0x80004005.”

    Maybe anyone ran into the same problem and have a solution for me.

    Best regards and thank you for your answers.

All Replies

  • Friday, November 09, 2012 10:02 AM
     
     Answered

    You should register sqlceca40.dll ("regsvr32 sqlceca40.dll") before registering OLEDB provider dll ("regsvr32 sqlceoledb40.dll").

    Anyway, registering OLEDB provider is a "system-wide" operation - you cannot register OLEDB provider only for your application, so only administrators can do it and it affects all users.

    See also http://stackoverflow.com/questions/10739845/how-to-deploy-sql-server-compact-edition-4-0

    • Marked As Answer by LegendaryMiami Monday, November 19, 2012 3:06 PM
    •  
  • Wednesday, November 14, 2012 12:02 PM
     
     

    Hi,

    thank you for your feeback :).
    I will try it!

  • Monday, November 19, 2012 3:06 PM
     
     Answered

    Hi,

    the solution was to use the "Reg-Free COM" implementation from http://stackoverflow.com/questions/10739845/how-to-deploy-sql-server-compact-edition-4-0.

    • Marked As Answer by LegendaryMiami Monday, November 19, 2012 3:06 PM
    •