
SQL Compact Edition 4 ofrece a los desarrolladores web que están construyendo distintos proyectos, la posibilidad de aprovechar el almacenamiento de base de datos mediante un motor de base de datos incorporado y gratuito.
SQL Server Compact Edition (SQL Server CE) es el motor de base de datos para PocketPC, su creación y funcionamiento está basado en el proveedor de datos de .NET Compact Framework el cual fue desarrollado con tecnología .NET de Microsoft.
Un proveedor de datos de .NET Compact Framework para SQL Server CE describe una colección de clases utilizada para tener acceso a una base de datos de SQL Server CE, los dispositivos basados en Windows CE o Windows Mobile obtienen mediante la invocación de este gestor un entorno administrado de base de datos similar a los grandes repositorios, tales como Informix u Oracle. Con SqlServerCe, se pueden crear bases de datos de SQL Server CE en un dispositivo móvil y establecer conexiones con las bases de datos de SQL Server que se encuentran en el dispositivo o en un servidor remoto.

Características Principales
• SQLCe acepta sintaxis Transact-SQL, lo que lo vuelve facilmente escalable a sus hermanos mayores (SQL Express Edition, Standard Edition, etc). Aún así a la hora de portar código desde/hacia otro SQL Server es necesario tener en cuenta algunos puntos, por ejemplo: los tipos de datos en SQLCe, son un subconjunto de los disponibles para SQL Express Edition.
• No pueden utilizarse Stored Procedures, esta limitación es clave a la hora de pensar en escalabilidad. Puede ser el punto que nos lleve a inclinarnos por SQL Express Edition. Más adelante, en una comparación entre SQLCe y SQL EE voy a resumir algunas razones por las que podría prescindirse de Stored Procedures.
• Una base de datos SQLCe se almacena en un único archivo, lo que facilita la transferencia de bases de datos individuales.
• SQLCe es un conjunto de librerías de alrededor de 2Mb, que pueden ser distribuídas con nuestra aplicación sin necesidad de registrar componentes, ni servicios, por lo tanto, no se necesitan privilegios de administrador durante la instalación, y los recursos de memoria y espacio en disco son mínimos.
• Dado el tipo de dispositivos en los que SQLCe pretende funcionar (desde notebooks, pc’s de escritorio a pocket pcs y smartphones), cuenta con características de seguridad, y protección contra errores (robo, perdida de energía) que son exclusivos para estas plataformas.
Herramientas para la sincronización de datos con SQL Server 2005
SQL Compact Edition y SQL Express Edition se presentan como las dos opciones, ambas gratuitas, a la hora de implementar bases de datos locales en PC’s de escritorio (Windows XP/Vista o Tablet PC), en cambio la opción es clara para dispostitivos móviles (SQLCe), y para bases de datos centrales, multiusuario (SQL Express).
Stored Procedures
Para los que estén acostumbrados a trabajar con bases de datos centrales, de gran escala, con múltiples usuarios accediendo concurrentemente con diversos privilegios, resulta inmediato basar la capa de datos en Stored Procedures, las históricas razones de esto son 3, voy a resumir porque estas razones podrían no tener tanto peso en un escenario muy distinto, como es una base de datos embebida, local y monousuario (escenario al que apunta SQL Ce).
• Rendimiento: Los stored procedures permiten ejecutar código de acceso a datos, optimizado para este uso. Sin embargo teniendo un solo usuario, sobre una base de datos local, implica que las consultas no llegarán con mayor concurrencia que los clicks de un usuario, por lo tanto (en lo que a performance se refiere) resulta aceptable codificar esta lógica procedural en la capa de datos de la aplicación.
• Abstracción: Acceder a los datos únicamente con stored procedures, es una forma de construir una capa de abstracción sobre éstos, sin embargo tanto el motor de SQLCe como las bases de datos pueden ser distribuídas y versionadas junto con la aplicación, y el beneficio de mantener esa abstracción ya no resulta tan evidente.
• Seguridad: Una vez más, los stored procedures permiten restringir el acceso a los datos, permitiendo únicamente ciertas operaciones sobre éstos, sin embargo la base de datos es distribuída con la aplicación y el usuario es único, en este escenario tienen más sentido otras medidas de seguridad, como encriptar la base de datos, e incluir en ésta únicamente el subconjunto de datos que el usuario local necesita.
• Dicho esto, por supuesto hay que evaluar la escalibilidad de nuestra aplicación, para evitar a toda costa verse en un futuro en la situación de traducir procedimientos C#/Vb.NET, a Transact-SQL.
• Recursos, SQL Ce requiere de solo 2Mb en disco y un uso de memoria y procesador muy inferiores a SQL Express Edition, que al instalarse ocupa alrededor de 200Mb en disco, y al ser un servicio, se encuentra constantemente esperando ser invocado por una aplicación cliente (a pesar de estar preparado para «adormecerse» en períodos de inactividad)
• Instalación, SQL Ce, puede distribuirse con nuestra aplicación, de manera que no requiera privilegios de administrador para instalarse y poder controlar su versionado. Alternativamente puede (como SQL Express) instalarse mediante un MSI, y recibir actualizaciones de Windows Update.