¿Implementación de proyectos de base de datos VS2010 sin VSDBCMD?

Hemos estado usando los proyectos de base de datos de Visual Studio 2010 para varios proyectos internos o de un solo cliente desde que se presentaron por primera vez, y hasta ahora nos están funcionando muy bien. Ahora los estamos usando por primera vez con un producto "en caja" que debe empaquetarse para su instalación en sitios de clientes arbitrarios.

Todo lo que he visto hasta ahora sugiere que envío el .dbschema archivo más el vsdbcmd herramienta y sus requisitos como parte de mi MSI, luego inicie esa herramienta como parte de la instalación.

¿Es esta realmente la forma más sencilla de realizar esta tarea? Estamos haciendo esto para nuestra prueba beta inicial, pero hasta ahora parece un truco rápido en lugar de una buena estrategia de implementación a largo plazo. En particular, nos vemos obligados a instalar ambas SQL Server CE de 32 bits y SQL Server CE de 64 bits en la máquina antes de instalar nuestro software. Todos los intentos de empaquetar lo que necesitábamos solo dentro del MSI fallaron porque nos faltaba un ensamblaje de una u otra arquitectura.

La otra cosa que investigamos fue enviar la salida sqlcmd archivos que se producen cuando "implementamos" el proyecto en el momento de la compilación, pero que incluyen el nombre de servidor codificado de nuestro servidor de desarrollo interno (y no es una variable SQLCMD como el nombre de la base de datos), lo que significa que tuvimos que editar el archivo . script sql durante la instalación del servidor. Nuevamente, eso funciona, pero parece una mala idea en general.

Nuestro enfoque final, y lo que probablemente terminemos haciendo para la producción si no se me ocurre algo mejor, es producir scripts de creación y actualización manualmente, en función de los resultados de la implementación, luego incluir una herramienta personalizada con nuestro instalador que se ejecuta los guiones (a través de SqlClient or sqlcmd o algo similar) basado en la interacción del usuario, pero esto parece estar anulando gran parte del propósito de los Proyectos de base de datos.

¿Existen otras formas de compilar y empaquetar un proyecto de base de datos VS2010 para implementación automatizada en diferentes servidores que no impliquen instalar 2 versiones de SQL CE y enviar una pieza de Visual Studio con nuestro instalador?

preguntado el 03 de mayo de 12 a las 17:05

¡Hola Michael! ¿Mi respuesta ayudó en algo? -

bueno, más o menos, en el sentido de que hemos llegado a la conclusión de que los proyectos de bases de datos simplemente no están diseñados para implementarse externamente. -

1 Respuestas

Hasta donde yo sé, lo que ha sugerido inicialmente es probablemente lo mejor.

Microsoft parece haber sabido esto desde el principio, ya que recomiendan y tienen instrucciones sobre cómo instalar vsdbcmd en servidores de compilación sin necesidad de Visual Studio. Podría extender fácilmente este pensamiento a la instalación en un sitio de Clientes.

Si bien podría idear su propio método para crear los archivos de salida y realizar un proceso posterior a la compilación en ellos, acaba de mover la complejidad a otro lugar y creó otro fragmento de código que necesita mantenimiento.

Los instaladores de SQL CE no son tan grandes y hacerlo parte de su MSI mantiene las cosas simples, empaquetadas juntas y asegura que obtenga la máxima funcionalidad de los proyectos de base de datos.

Respondí una pregunta similar a esta y un enlace a un artículo de MS relevante, en esta pregunta SO:
¿Puedo realizar implementaciones de bases de datos sin instalar Visual Studio o VSTSDB?

contestado el 23 de mayo de 17 a las 13:05

cierto, los instaladores de SQL CE no son tan grandes, pero es difícil justificar ante el departamento de TI de un cliente por qué necesitamos 3 versiones de SQL instaladas para una aplicación. pero básicamente parece que no hay una buena manera de hacerlo, así que esta es la mejor respuesta que obtendré. - miguel edenfield

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.