I would would (and do). SQL Compact (SQLCE) tiene una clara ventaja en algunos escenarios. Ahora de ninguna manera pretende ser un reemplazo para SQL Server. No escala, no está hecho para ejecutar miles de conexiones simultáneas, no está diseñado para informar servicios, etc., etc.
Pero tiene huella pequeña. La instalación es solo una cuestión de copiar archivos DLL. Copia de seguridad es una copia de archivo simple. Y puede ser muy rápido para el almacenamiento y la recuperación si está utilizando table direct o BCP. Ah, y es gratis. Si solo necesita un almacén de datos local para una aplicación, SQL Server es una tarea difícil de implementar y configurar. SQLCE es simple. Además, puede jugar en la misma zona de pruebas que un servidor SQL completo como un suscriptor de replicación (que la mayoría de los otros pequeños DB no pueden).
Editar: se olvidó de responder a sus preguntas específicas:
- La cantidad de datos que puede manejar? En términos de qué? Tamaño de DB? Rendimiento? ¿Tamaño de la mesa? ¿Tamaño de fila? Mi experiencia es que he ejecutado el DB a unos cientos de MB sin problemas. Creo que puede contener 4 GB (a partir de 4.0). El rendimiento está directamente relacionado con la forma en que está poniendo datos o quitándolos. Lo estamos utilizando en una solución en la que estamos capturando 1k filas por segundo sin ningún problema. Puede tener 1024 columnas y un tamaño máximo de fila de 8k.
- Múltiples usuarios? Bueno, puede manejar múltiples conexiones simulaneas (a partir de 3.5), así que sí, eso debería funcionar. He usado múltiples conexiones de un usuario, nunca de múltiples.
- ¿Bases de datos rotas? Definir "roto". El motor tiene un método de "compactación y reparación". Es un archivo como cualquier otro. ¿Cómo arreglas un ejecutable roto? No he visto ninguna corrupción en el campo, si eso es lo que estás preguntando (bueno, lo hicimos en un dispositivo CE que tenía una tarjeta de almacenamiento defectuosa, pero eso no es culpa del motor).
¿Por qué no utilizar SQL Express en su lugar? – ChrisW
Estamos tratando de decidir. SQL Express requiere mucho más espacio, se ejecuta como un servicio separado (el recuento de servicios es una limitación para nosotros), utiliza recursos incluso cuando no se usa, requiere la instalación de msi, etc. –