Actualmente estoy usando Tortoise SVN para controlar la fuente de una aplicación web .NET. ¿Cuál sería la mejor manera de incorporar nuestros procedimientos almacenados de SQL Server a Source Control? Actualmente estoy usando VS 2010 como mi entorno de desarrollo y me estoy conectando a una base de datos SQL Server 2008 R2 fuera de las instalaciones usando las herramientas de datos de SQL Server (SSDT).
Lo que he estado haciendo en el pasado es guardar los procs en un archivo .sql y mantener estos archivos bajo control de origen. Estoy seguro de que debe haber una manera más eficiente que esto? ¿Hay alguna extensión que pueda instalar en VS2010, SSDT o incluso SQL Server en la máquina de producción?
Respuestas:
Existen herramientas, como esta de Redgate , pero siempre he encontrado que lo mejor es guardar como archivos SQL, tal vez incluso en un Proyecto de base de datos (SSDT?) En su solución.
Junto con esto, sugiero las siguientes pautas:
if exists then drop
" apropiado al inicioInicialmente, puede crear estos archivos SQL mediante secuencias de comandos directamente desde SSMS, y puede configurar SSMS para que ejecute todas sus "
drop
" y "create
" así como sus permisos.fuente
Guardar los archivos SQL en el control de origen proporciona control sobre los archivos SQL solamente. No controla los cambios de los objetos reales de la base de datos, ni evita los cambios simultáneos del mismo objeto de la base de datos por parte de múltiples usuarios (y supongo que a usted también le gustaría tener eso bajo control). Lo que utilizamos es una herramienta de terceros ( Versión ApexSQL), se integra con SSMS y VS, puede elegir si desea trabajar con una versión de la base de datos del objeto o con una versión de control de origen. Si está editando una versión de la base de datos, se desprotege automáticamente solo para usted, para que nadie más pueda editarla (no combina cambios de diferentes usuarios). Solo cuando lo vuelves a registrar, otros pueden modificarlo. Y puede tener su versión SC diferente de la versión de un objeto vivo (lo uso cuando salgo por el día y planeo terminar las ediciones y probarlo en el siguiente)
fuente
Use RedGate Source Control para conectarlo a su control de fuente.
http://www.red-gate.com/products/sql-development/sql-source-control/
Conectará su SSMS directamente a su repositorio de control de origen e incluso permite el registro de datos estáticos.
Funciona de maravilla
fuente
Prueba Ankhsvn , muy recomendable y gratis.
Desde la página de inicio:
fuente
He intentado el proyecto de base de datos de RedGate y Visual Studio y prefiero almacenar la definición de la base de datos en el proyecto de base de datos. Tan pronto como la base de datos se convierta en parte de la solución, puede usar su proveedor de control de fuente preferido. La mayoría tiene una excelente integración de Visual Studio.
Con las herramientas SSDT, tiene la 'última versión' de la definición de la base de datos, lo que le permite realizar comparaciones de esquemas y generar scripts de actualización de esquemas fácilmente.
Dicho esto, el esquema generalmente es solo una parte de la ecuación. En la vida real resulta que las bases de datos ya tienen muchos datos. Y mis usuarios tienden a sentirse bastante decepcionados cuando lo pierden.
Tan pronto como lancé la v1.0, surge la necesidad de mantener los scripts de actualización. A veces, estos solo contienen cambios en el esquema, pero muchas veces necesito crear valores predeterminados basados en el contenido de alguna otra tabla, necesito liberar una restricción particular hasta que sembraron los datos, etc. Por lo general, simplemente actualizar el esquema no es suficiente. Mi preferencia es tener estos scripts de actualización en una carpeta separada en el proyecto de base de datos también. Por lo general, se vería como 'actualizar de v1.0 a v1.1'.
Mis bases de datos siempre tienen una tabla de referencia que me indica el número de versión actual, por lo que puedo bloquear actualizaciones incompatibles. La primera declaración en mis scripts de actualización verifica la versión actual y rescata si es diferente de lo esperado.
Otro beneficio de los proyectos de bases de datos es poder implementar diferentes conjuntos de datos basados en el mismo esquema. Tengo un conjunto de datos diferente para el desarrollo, el equipo de control de calidad, la prueba de aceptación del usuario y las pruebas de integración automatizadas. Dado que un proyecto de base de datos puede tener solo 1 secuencia de comandos posterior a la implementación, el truco aquí es hacer un nuevo proyecto de base de datos que haga referencia al proyecto 'maestro' y hacer que el conjunto de datos personalizado sea parte del proceso posterior a la implementación de ese proyecto.
Estos fueron mis 2 centavos, sea cual sea el proceso que surja, sobre todo, debe ajustarse a usted y a su equipo y, con suerte, apoyarlo con la mayoría de las tareas comunes.
fuente
Terminé escribiendo una herramienta yo mismo.
Está disponible para descarga gratuita: http://www.gitsql.net
Espero que ayude a otras personas que desean alcanzar el mismo objetivo final.
Aquí hay un artículo que describe cómo controlar el origen de SQL Server. http://gitsql.net/documentation-04_SQL_Server_and_GIT
He tratado de hacerlo lo más fácil posible. (3 pantallas)
También, accidentalmente, agregué la función de poder elegir selectivamente objetos individuales para importar, o exportar. Lo que lo hace mucho más fácil durante el desarrollo.
Por lo general, haría un cambio en un procedimiento almacenado y una tabla, y luego exportaría esos dos objetos a un directorio GIT.
Luego uso Source Tree para ver visualmente los cambios y luego los confirmo en bitbucket si estoy contento.
fuente
Mi compañía acaba de desarrollar esta nueva herramienta ( gratuita ) que lo ayuda a extraer fácilmente scripts para bases de datos SQL, puede hacer comparaciones , puede iniciar WinMerge para comparar rápidamente scripts con bases de datos en vivo, y también puede sincronizar diferencias tanto actualizando los scripts como aplicando los cambios a la base de datos (a excepción de las tablas, que implicarían más complejidad y más riesgos).
Servantt es el WinMerge para comparar bases de datos de SQL Server con secuencias de comandos controladas por versión.
Es compatible y fomenta las mejores prácticas en el desarrollo de software:
(*) Las secuencias de comandos se guardan en una carpeta local que puede ser una copia de trabajo de Git, Subversion, TFS, Source Safe o cualquier otro VCS.
Descarga gratuita: http://servantt.com
La versión profesional (que aún está en desarrollo) será una bestia completamente diferente: está dirigida a la automatización de la implementación (administración de versiones), para automatizar tareas como actualizar IIS, actualizar los Servicios de Windows, etc.
fuente