2009-03-31 22 views
5

He estado buscando algo de tiempo para una buena solución para implementar la idea de administrar el esquema en una base de datos SQL Server Compact 3.5.SQL Server Compact - Schema Management

Conozco varias formas de administrar el esquema en SQL Server Express, SQL Server Standard, SQL Server Enterprise, pero Compact Edition no admite las herramientas necesarias para utilizar la misma metodología.

¿Alguna sugerencia/sugerencia?


Debo expandir esto para decir que es para más de 100 clientes con el software wrapperware. A medida que el sistema cambia, necesito publicar scripts de actualización junto con los nuevos binarios para el cliente. Estaba buscando un método decente para publicar esto sin tener que entregarle al cliente un archivo de script y decir "Ejecutar esto en SSMSE". La mayoría de los clientes no son capaces de hacer semejante bestia.

Un amigo mío reveló un script parcial sobre cómo manejar la parte de SQL Server de mi tarea, pero nunca funcionó en Compact Edition. Parece que estaré solo para esto.

Lo que creo que he decidido hacer, y que va a necesitar una "semana friki" de lograr, es escribir una especie de una herramienta muy similar a cómo WiX y NAnt obras, por lo que sólo puede escribir un documento XML demasiado entusiasta para manejar el trabajo.

Si creo que vale la pena, lo publicaré en CodePlex y/o The Code Project porque he usado ambos sitios un poco para obtener una mejor comprensión de los conceptos de los trabajos que he hecho en el pasado, y Creo que probablemente valga la pena devolver un poco.


Editar en 5/3/2010:

Si alguien está dispuesto a "nombre" del proyecto, subiré la versión sucia/desagradable que he escrito para MS SQL para CodePlex por lo que tal vez podamos comenzar a piratear una versión de SQL Compact. Aunque, creo que con la próxima revisión de la aplicación inicial que estaba planeando, voy a abandonar SQL Compact y simplemente usar archivos XML para almacenamiento, ya que el software se está convirtiendo de un paquete Installable en una aplicación de Silverlight. Silverlight solo ofrece una mejor estrategia de acceso.

Respuesta

0

algunos pensamientos al azar (no estoy seguro que pueda responder plenamente a pesar de)

  1. la Microsoft Sync Framework es una opción. No he tenido la oportunidad de apreciar completamente lo que puede hacer una vez que lo haya implementado después de la primera vez inicial (que parece funcionar bien). Hay un sitio MSDN para él here

  2. Puede ejecutar scripts en un dispositivo móvil, pero no a través de SQL Management Studio, por lo que en teoría podría administrar/mantener scripts T-SQL pero el inconveniente es que el T -SQL serían enrevesado (a CE de declaraciones compatibles) y no sé una manera de "automatizar" ejecución - pero el Sync Framework podría contener algunas respuestas ..

+1

Uso de Sync Framework ... es para mover datos entre una copia completa del servidor SQL y una copia de satélite de los datos. Mi punto fue ¿cómo cambian las personas que hacen el desarrollo móvil de la base de datos a medida que evoluciona su software? –

+0

También puede AFAIK manejar los cambios de esquema con él también – RobS

+0

Usted "Puede", pero es una propuesta muy desordenada con la forma en que funciona el Fx. Para realizar realmente cambios en el esquema, dependiendo de lo que esté haciendo, debe volver a crear la tabla con el nuevo esquema, mover los datos de la tabla anterior a la nueva, eliminar los existentes y cambiar el nombre a los nuevos. :( –

0

Si uno de los criterios clave va para trabajar de manera eficiente en una tubería pequeña, la única opción real que tiene es almacenar una versión de esquema DB (quizás de alguna manera vinculada a los scripts registrados en su CMS) y cuando se necesita una actualización, los scripts de cambio se envían el cable y aplicado en ordenEs probable que también desee mantener un registro en su base de datos de estos scripts que se están aplicando para que pueda manejar con gracia las desconexiones, reinicios y otros problemas potencialmente desagradables.

-2

¿Es SQL Server Management Studio algún uso para usted?
http://technet.microsoft.com/en-us/library/ms172933.aspx

+0

Damian ... No creo que hayas leído la publicación ... y tal vez tenga que hacer esto está más claro ... Necesito publicar scripts de actualización para más de 100 clientes ... Necesito una forma en que la aplicación pueda manejar las actualizaciones para mí. De hecho, he decidido construir mi propio método, usando Xml, para que funcione de manera muy similar a lo que tienes en herramientas como nAnt y WiX. Es una mierda que nadie haya hecho esto antes ... que no puedo simplemente disparar una copia, editar para mi uso, y terminar con eso. –

+0

@RichardB Mi respuesta fue agregada * antes * usted modificó su pregunta para mencionar que usted necesitaba hacer esto en más de 100 máquinas, así que sí, * he * leído la publicación. Normalmente, no volvería sobre un comentario como este, pero parece que he recibido un par de votos como resultado, lo cual es molesto por decir lo menos. –

+0

disculpas. Obtengo lo mismo, y no debo haberme dado cuenta. ¿Conoces alguna forma de que pueda purgar el comentario anterior para que no te quemes? Lo he conseguido una o dos veces. –

2

Actualmente estoy buscando en Migrator.Net. Esto le permite escribir cambios en su base de datos, llamados migraciones, directamente en C#.
Estas migraciones pueden contener desde simples entradas/caídas de tablas, modificaciones de columnas hasta complicados códigos de actualización de datos.

Cuando se inicia la aplicación, puede verificar en qué versión se encuentra la base de datos y aplicar las migraciones necesarias para actualizarla. Todo esto se maneja automáticamente. El código para ejecutar esta actualización es tan simple como:

Assembly asm = Assembly.Load("LocalModels.migration"); 
Migrator m = new Migrator("SqlServerCe", "Data Source=LocalModels.sdf", asm, false); 
m.MigrateToLastVersion(); 

Estoy teniendo un par de problemas menores con el apoyo compacto (que asume el esquema predeterminado es dbo). Pero no creo que sea demasiado difícil arreglarlos.

+0

Eso es bastante genial en general, teniendo en cuenta que parece ser una solución independiente de base de datos. De hecho, puedo necesitar mirar eso. –

+0

¿Tiene alguna actualización con respecto a esto? –

+0

He estado usando Migrator.Net por un tiempo. El proyecto está abandonado, pero funciona bien para mí. He realizado algunos cambios, la mayoría de ellos específicos del proyecto. Solucionar el error con Compact resultó ser fácil, aunque he migrado a SQLite desde entonces. Puedo publicar mis actualizaciones en github si serían útiles para alguien. – oillio

Cuestiones relacionadas