SQL Server Compact 4: Unable to load the native components

Buenas! Un post ligerito, ligerito 🙂

Ando esos días probando cosillas con SQL Server Compact 4 (que os podéis descargar desde su página de descargas o bien usando Web Platofrm Installer).

Habiendo probado código con EF 4 Code First que estaba funcionando bien, empecé otras pruebas usando el proveedor propio de ADO.NET. Así que agregué una referencia a la System.Data.SqlServerCe.dll que viene con SQL Server Compact 4, y cree una conexión:

SqlCeConnection con = new SqlCeConnection()

Pues bien, al crear la conexión (fijaos que aquí no hay cadena de conexión, todavía no me conecto a ningún .sdf) ya me salta una SqlCeException:

Unable to load the native components of SQL Server Compact corresponding to the ADO.NET provider of version 8402. Install the correct version of SQL Server Compact. Refer to KB article 974247 for more details.

Hombre, es de agradecer que la propia excepción te diga un KB que consultar, así que ni corto ni perezoso me dirigo al KB974247, pero nada de lo que dice es aplicable en mi caso.

Descartando el hecho de que sea una mala instalación (puesto que con EF 4 Code First era capaz de conectarme) me puse a mirar que podría estar pasando… y la respuesta final es que se deben copiar los binarios de SQL Server Compact 4 a la carpeta bin de la aplicación.

En mi caso SQL Server Compact 4 se ha instalado en C:Program FilesMicrosoft SQL Server Compact Editionv4.0 y los binarios que he copiado son las carpetas x86 y amd64 que están en la carpeta Private. De hecho en mi caso me basta con la carpeta x86 puesto que mi máquina es de 32 bits.

Así pues en el bin/Debug de mi aplicación tengo mi aplicación, la System.Data.SqlServerCe.dll y la carpeta x86 con los binarios de SQL Server Compact 4.

Y entonces me funciona todo correctamente.

Un saludo!

PD: Y de regalo, os dejo (por si no lo conocíais) el enlace de una extensión, llamada SqlCeToolbox, para vs2010 para poder tratar con ficheros .sdf de la versión 4 (sinó la otra manera que hay es usar WebMatrix que tiene un diseñador de tablas, pero me parece más potente esta exensión).

5 comentarios sobre “SQL Server Compact 4: Unable to load the native components”

  1. Buen truco Eduard!

    Todavía no he probado el Compact, pero con toda probabilidad me habría encontrado con este problema, así que seguro que me acabas de ahorrar un buen rato de investigación. 🙂

    Saludos.

  2. Buenas!
    Pues ya ves, yo me he econtrado con esto sólo atacando a Compact usando su proveedor de ADO.NET. Usando EF me funcionaba bien y la extensión de vs2010 que permite editar tablas me funcionaba bien, al igual que webmatrix… En fin, supongo que son cosas de ser una CTP… 😛

    un saludo!

  3. Curioso Eduard, porque lo que estás haciendo es un private deployment y no te debería hacer falta. Estas referenciando al SqlServerCe correcto desde tu aplicación?

    Unai

  4. Buenas Unai!

    Juraría que si: referencio al que está en C:Program FilesMicrosoft SQL Server Compact Editionv4.0Desktop.

    Lo que tengo el copy local a true, por lo que se me copia al /bin… reconozco que no he probado con copy local a false.

    Quizá la instalación del SQL Compact 4 no me ha hecho algo bien (tengo el 3.5 también y no sé si por aquí puede fallar algo).

    Un saludo y gracias por comentar!!! 😀
    Gracias por comentar!!! 😀

  5. Actualización: Instalé el CTP2 de SQL Compact (ví que apareció en el WebPI), y desaparecieron todos los problemas.
    Diferencia: al añadir la referencia, ahora me la pilla de la GAC, cosa que antes no…

    Misterios de redmond…
    Saludos!

Responder a jmaguilar Cancelar respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *