2012-01-23 30 views
7

OK ... soy nuevo en Git/Github después de estar en Visual Source Safe la mayor parte de mi carrera y he visto la luz, me encanta. Así que he migrado todos mis proyectos .NET a mi cuenta de Github y también me gustaría administrar todas mis bases de datos de SQL Server con Git. En todos mis proyectos siempre pongo mis archivos de base de datos en un subdirectorio/Database, así que tengo, por ejemplo, /Databases/MyDatabase.mdf y /Databases/MyDatabase.ldf en mi árbol de fuentes. Estoy siguiendo estos archivos con Git y se muestran en Github muy bien con todo el resto de mi fuente.Archivos MDF Git y SQL Server

Esto es lo que esperaba: Dejo de SQL Server con un STOP MSSQLSERVER de NET STOP y busco una rama para que Git despliegue los archivos MDF y LDF para esa rama. Reinicie SQL Server con NET START MSSQLSERVER y realice el trabajo que necesite en el origen y la base de datos para esa rama en particular. Git hace un seguimiento de mis cambios en el archivo MDF y cuando hago una etapa/commit/push enviaría los cambios nuevamente al repositorio remoto.

Intenté esto tirando de la base de datos y agregando una nueva columna a una tabla y haciendo una confirmación. Git me dijo que no había cambios en ningún artículo que no esperaba ... Cambié el archivo MDF. ¿No es posible que Git rastree los cambios en un archivo MDF? Mi primera suposición fue que tal vez porque era binario y no por texto, Git podría tener problemas con él, pero creo que es posible usar Git para realizar un seguimiento de los archivos de imagen y otros elementos binarios, por lo que no parece ser el problema. . ¿Algunas ideas? ¿Simplemente no es posible? ¿No debería siquiera intentar hacer esto? Gracias de antemano por sus comentarios.

+0

Fuera de tema; votando para mudarse a DBA SE. – Yuck

Respuesta

8

Es una muy mala idea colocar cambiando los archivos de base de datos en cualquier control de fuente. Intente crear/actualizar los scripts apropiados y almacenarlos en el control de fuente: esta es la forma correcta de rastrear los cambios de esquema dentro del DB.

Si está usando Visual Studio: este es un buen punto para comenzar con proyectos de bases de datos y servidores en eso. Pero a veces se comporta de manera extraña, a fin de utilizar con precaución y suavidad

O se puede utilizar algún software comercial/libre para realizar un seguimiento de los cambios dentro del esquema DB y datos, como Redgate Comparación de esquemas o Redgate datos de comparación

+0

Aceptaré su respuesta/respuesta si explica por qué es una mala idea ... todo lo que quiero hacer es mantener las versiones de los archivos para que se modifiquen si es necesario durante el desarrollo. No espero fusionar un archivo MDF de rama en un archivo maestro ni nada, solo quiero control de versiones en los archivos. ¿Cuál es la diferencia entre un archivo .mdf/.ldf y algo así como, digamos, un archivo de Photoshop? Escribir cada cambio que hago durante el desarrollo temprano es un dolor. Utilizo la comparación y comparación de datos de SQL de Redgate y son excelentes herramientas para mover entornos de cambio (p.gramo. dev a qa para prod). –

+2

@ CK1 Pequeños cambios en el esquema, cada ** apertura ** del servidor DB por sql causa la recarga de todo el archivo/log al servidor, ya que el tamaño mínimo de la base de datos es de 4 Mb - esto significa una gran sobrecarga de basura. Las secuencias de comandos solo cambian y guardarlas en el control de origen le proporciona un historial limpio y legible de los cambios en la BD –

+0

@ CK1 ¿Considera que acepta alguna respuesta? –

1

¿Ha considerado utilizar nuestra herramienta de control de código fuente SQL para realizar un seguimiento de los cambios de desarrollo? Esto hace todo el 'guión' para ti detrás de escena. En realidad usa el motor de SQL Compare debajo del capó.

http://www.red-gate.com/products/sql-development/sql-source-control/

Como Oleg señala correctamente, es posible realizar un seguimiento de los cambios de esquema utilizando SQL Compare y comparar datos SQL, pero aquí en la puerta roja que no recomendaría hacer esto sobre el mantenimiento de su entorno de desarrollo bajo control de origen . Idealmente deberías hacer ambas cosas. Grant Fritchey ha escrito un excelente artículo que describe cómo se puede utilizar la línea de comandos de SQL Compare con un sistema de control de origen para seguir los cambios en el esquema. Utiliza SourceGear Vault en sus ejemplos, pero los principios se aplican a cualquier sistema de control de origen.

http://www.simple-talk.com/sql/database-administration/auditing-ddl-changes-in-sql-server-databases/

Cuestiones relacionadas