jueves, 28 de mayo de 2009

SQL Server Compact Edition 3.5

Despues de trabajar con SQL Server 2000 y 2005, en sus versiones Stadard Edition y Express, y tambien con MySQL, estaba muy conforme con el rendimiento de ambas bases de datos. Yo me conecto con ellas desde pequeños sistemas realizados en C# para Windows, el problema era que el target de mis clientes y la magnitud de mis aplicaciones me llevan a pensar que una solución con un motor serio de BBDD me quedaba grande, esto es porque el esfuerzo que requieria una instalación "Limpia" para el usuario, implicaba muchas configuraciones que intentaba solucionar parametrizando el instalador de dichos motores, o , en el caso de MySQL, utilizando paquetes como wamp que realmente facilitan la instalación, pero seguía convencido que debeía existir una solución y que no debería volver a caer en Access!!

Bien, no se como Alá me iluminó y encontre SQL Server Compact Edition 3.5, que resulta ser a mi entender un conjunto de librerias que permiten implementar una pequeña base de datos relacional contenida en un archivo .sdf, esta es la solución que buscaba, libre de instalaciones complejas, usuarios administradores, password, en fin, lo mas liviano posible para mis requerimientos.

Pero, siempre hay un pero, no todo es gratis, SQL Server CE, si bien funciona en dispositivos móviles, no soporta vistas ni SP, lo de los SP me lo banco, pero las vistas!!!, como las voy a extrañar.

En Fin, siempre hay un costo que pagar, la complejidad es constante y soluciones completas requieren paquetes de software completos, hay que adaptarse a lo que hay, siempre y cuando lo que ganamos es mas de lo que perdemos. y creo que este es mi caso.

Bueno, como me fue con esto?, bien, con un pequeño inconveniente, que es el siguiente, al instalar SQLCE, (El Runtime), se crea esta carpeta: C:\Archivos de programa\Microsoft SQL Server Compact Edition\v3.5\Desktop, y ahi esta la dll que debemos referenciar. 

Bien yo no me di cuenta de esto y entonces fue al VS2005 y agregue una referencia a una dll que aperece por defecto en la solapa .NET, bien este fue mi error, al parecer esa referencia es de la versión anterior a SQL CE y no funciona, ya que solicita otras dlls.

Para que me funcionara la versión 3.5 y no la 3.0 tuve que referenciar explicitamente a la dll de la carpeta antes nombrada. Cuando hice esto todo funciono correctamente. 
O casi. como el archivo SDF yo lo habia creado con VS2005, se creo con la versión 3.0 y la versión 3.5 me pidio actualizar: para actualizar ejecute esto:

 SqlCeEngine a = new SqlCeEngine();
            string strconn = "Data Source =\"E:\\MiTrabajo\\GestionDigital\\CodigoFuente\\BaseDeDatos\\DB.sdf\"" + "; Password=123456";
            string strconn2 = "Data Source =\"E:\\MiTrabajo\\GestionDigital\\CodigoFuente\\BaseDeDatos\\DB35.sdf\"" + "; Password=123456";
            a.LocalConnectionString = strconn;
            a.Upgrade(strconn2);

Bien al parecer el Administrador de SQL Server 2005 y 2008 tienen una funcionalidad para exportar una BD a un archivo sdf, mientras tanto voy a probar con esto: