2009-01-06 14 views
22

¿Tiene sentido utilizar SQL Server Compact para una aplicación de escritorio?¿Utilizaría Sql Server Compact para una aplicación de escritorio?

  • ¿Cuántos datos puede manejar?
  • ¿Es posible usarlo con múltiples usuarios? ¿Cuáles son las restricciones?
  • ¿Qué sucede cuando se rompen los archivos de la base de datos? ¿Es posible recuperar mediante programación o sería fácil resolver el problema de forma remota?
+0

¿Por qué no utilizar SQL Express en su lugar? – ChrisW

+2

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. –

Respuesta

32

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).
+0

Broken: archivo db dañado. Por ej. ¿Qué pasa si la computadora se apaga de repente? ¿Puede el archivo db estar dañado? Si eso sucede, ¿puede recuperarse automáticamente? –

+2

La base de datos es como cualquier otro archivo. Si lo tiene abierto y le está escribiendo cuando extrae energía, entonces seguro, eso puede causar corrupción. Lo mismo se puede decir con cualquier base de datos. El motor en sí es ACID, y hemos tenido un éxito decente con la función Reparar por daños en las pruebas. – ctacke

+2

Una vez que descubrimos SqlCeDataReader y SqlCeResultSet, adoro absolutamente a CE. Es inicuamente rápido. –

0

lo usé para una aplicación y funcionó bien. El único problema que tuve fue que, por alguna razón, SQL Server 2005 Management Studio no es compatible con todas las características del diseñador para la última versión de SQL Server CE (por ejemplo, no puede editar tablas, por ejemplo). Debes usar la versión 2008, creo.

Es lo suficientemente rápido, pero es cierto que lo usé para pequeños conjuntos de datos.

Cuestiones relacionadas