2012-05-03 24 views
5

Tengo una aplicación C# .net que se ha distribuido por separado a varios clientes, de vez en cuando agregamos algunas características nuevas o corrigimos algunos errores y con frecuencia hacemos cambios en el DB. Utilizo el enfoque de implementación de un solo clic para actualizar el exe a las PC de mi cliente. Instancia de SQL Server ha sido instalada en su sistema.Ejecutar SQL Script con el ejecutable .net

Quiero saber cómo puedo actualizar su base de datos sql con cada actualización de exe.

Tenga en cuenta que es posible que un cliente esté trabajando en la versión 2 y nunca se haya actualizado a la versión 3, pero cuando se lanza la versión 4, entonces actualiza la aplicación. En tal caso, necesito ejecutar dos scripts en su base de datos. Uno para la versión 3 y otra para la versión actual, que es de 4.

Gracias

Respuesta

2

Suponiendo que tiene un procedimiento/script almacenado que puede actualizar una versión a otra, y suponiendo que no puede cargar ningún otro exe que la ejecute, ¿por qué no incluye una llamada para ejecutarla al inicio? de la nueva versión? ¿Habrá una verificación cuando el software se carga para ver si están usando la versión correcta de la base de datos? Si no, actualícela. Para manejar problemas como pasar de la versión 2 a la 4, solo asegúrese de que la base de datos en sí misma realice un seguimiento de la versión que es actualmente.

+0

Así que necesito mantener todas las secuencias de comandos de la base de datos en mi ejecutable cada vez que el usuario actualice el exe, su respectivo script debería estar disponible. – MegaMind

+0

sí, también debe agregar una versión de marca en la base de datos :) – ykatchou

0

Usted podría intentar sqlcmd y simplemente llamar al exe de tu interior de aplicación con las actualizaciones de base de datos.

0

Este es un escenario que se resuelve mejor mediante el uso de "Migraciones de base de datos". Hay varias herramientas disponibles en el ecosistema .net para ayudarlo con eso. Algunas de las herramientas vienen con un corredor independiente, mientras que otras se pueden compilar como un ensamblado .NET que puede incluir en su proyecto.

ejemplos son:

0

He creado dos componentes para abordar esta cuestión:

1.

A WinForms aplicación que analiza una determinada base de datos SQL, así como una carpeta de la solución que contiene los archivos SQL scruipt. Luego calcula los archivos de script a los objetos SQL y me permite crear un "Manifest.xml" que contiene un orden de ejecución para los diversos archivos de script.

Los archivos de script para las tablas contienen instrucciones por versión sobre la actualización de la estructura de la tabla.

El constructor luego copia los archivos de guiones relevantes junto con el manifiesto en una ubicación determinada. Por lo general, copio esos junto con mi aplicación si no estoy preocupado por la sobrecarga de mi carpeta de aplicaciones. De lo contrario, los comprime en un 7-zip protegido por contraseña.

2.

Una aplicación de línea de comandos que descomprime (si es necesario) y ejecuta el manifiesto. El trabajo real se realiza en una biblioteca de clases separada que se puede integrar en mis aplicaciones.

Luego en mi aplicación cada vez que mi appversion> dbversion ejecuto la actualización.

En las configuraciones donde solo hay una configuración de producción y puesta en escena en un solo cliente y generalmente no hay aplicaciones involucradas, usaré la aplicación CLI independiente de forma manual. Es una manera fácil de enviar actualizaciones, especialmente si modificó 20 vistas y REALMENTE no tiene ganas de copiarlas/pegarlas todas en SQL Mgt Studio: p

Cuestiones relacionadas