7

Mi DBA acaba de perder un trabajo de desarrollo que hizo en nuestra base de datos de desarrollo. Pobre amigo. Así que, naturalmente, nuestro gerente le preguntó, en nuestra reunión de estado, cómo podría suceder esto y cómo podríamos evitar que esto ocurra en el futuro. "El control de la fuente podría aliviar el problema" sugerí ... La respuesta del dba; "No, simplemente hacemos una copia de seguridad del servidor con más frecuencia". Ahora me gustaría ayudar a mi DBA a comprender qué es el control de origen y cómo se ajusta con un esquema y desarrollo de base de datos en ese esquema.¿Cómo se pone una gran base de datos existente (esquema) bajo control de fuente?

Anteriormente he intentado explicarle que no hay nada especial sobre el código fuente detrás de las tablas y los procedimientos almacenados, y debe estar en un sistema de control de fuente (TFS en este caso). Pero él simplemente no mordió. Ahora, aunque este error está en la memoria reciente, me gustaría tomar otra puñalada.

Así que mi pregunta es, ¿sabe de algún buen consejo que podría pasar a mi DBA y tal vez incluso un par de recursos explicando cómo se debería migrar un esquema de DB para estar bajo control de fuente y encontrar su lugar adecuado en los procesos de construcción y despliegue?

Un par de cosas sobre el medio ambiente:

  • control de código fuente en un TFS 2008 Server.
  • La base de datos es un servidor MS SQL 2008 con> 300 tablas y> 300 objetos más (sprocs, triggers, funciones, etc.).

Aclaración: Hemos estado utilizando Ghost DB y otras soluciones de gestión de cambios en otros proyectos con otros administradores de bases, en el pasado. ¡Incluso tenemos la licencia para la edición VS DB! El problema es lograr que el DBA piense incluso en esta forma de desarrollo para la base de datos. Él es realmente old school (es decir, migrar manualmente los cambios de entorno a entorno), y lamentablemente es el único que sabe algo sobre este DB en particular.

+0

todavía tengo que ver ninguna forma sencilla de obtener objetos de SQL Server en el control de código fuente. Siempre es difícil trabajar desde scripts en su disco duro. Entonces algunos putz siempre pueden entrar, presionar "Modificar" en ese proceso almacenado, y se van. Entonces, me interesa si hay una mejor manera (tm). – Eric

+2

Dada la aclaración, parece que no tiene un problema "tecnológico" sino un problema de "personas". Ninguna cantidad de herramientas perfectas va a cambiar su forma de pensar acerca de cómo hace su trabajo. Parece un caso de necesidad dictada a él a través de una autoridad superior. –

+0

Probablemente tengas razón. – JohannesH

Respuesta

0

realmente no se puede poner una gran base de datos bajo el control de código fuente, por lo que su DBA es correcto.

lo que puede hacer prácticamente es poner su esquema bajo control de código fuente, y tal vez algunas tablas de 'configuración' pequeñas.

+0

Quise decir el esquema ... Lo siento, lo aclararé. – JohannesH

+0

Es posible, siempre y cuando todo esté en formato script, pero los archivos grandes están ralentizando el rendimiento, pero mi suposición y recomendación es que solo estamos hablando de la secuencia de comandos del esquema como usted señaló. –

2

Si está utilizando Visual Studio Team System, recomiendo tener una puñalada en su edición de base de datos (creo que estos días viene con Developer Edition si usted es un suscriptor de MSDN). Lo que esto le permitirá hacer es crear un script de todos sus esquemas, procesos almacenados, vistas, disparadores, etc. y controlarlos desde la fuente. Esto también debería hacer que el dba sea más cómodo, ya que trabajará con una versión de la herramienta "Base de datos" en lugar de la versión "Desarrollador" (nombrar puede ser muy útil con las personas). A medida que realiza cambios desde Visual Studio, puede administrar los cambios de scripts mientras trabaja y controlarlos desde la fuente.

+0

Creo que estamos de acuerdo ... Usted pensaría que mi querido DBA debería estar saltando a una herramienta como la edición VS DB. Pero él no es. – JohannesH

1

Si su empresa tiene una licencia de MSDN, pueden usar la edición Visual Studio Database. Hay un video tutorial de él here.

No tengo ningún poder de compra, por lo que no sé cuáles son los desgloses de costos. Pero tiene la capacidad de que la fuente controle todas las partes de un esquema DB, e incluye la creación de scripts de cambio así como la implementación automática directamente desde VS si así lo desea (no lo recomendaría).

En general, es bastante sólido como una opción de control de fuente de base de datos.

+0

Gracias por el enlace, se enviará con prontitud. Tenemos una licencia para VS DB Edition, pero el problema principal es convencer a mi DBA de que debería usarlo. ;) Él es * realmente * la vieja escuela. Quiero decir, hemos estado utilizando DB Ghost y otras soluciones de administración de cambio de DB con otros proyectos y otros DBA, pero este DBA es persistente sobre la posibilidad de realizar modificaciones directamente en cada entorno. – JohannesH

+0

En ese caso, si él es * bueno * para hacerlo a su manera, y supongo que lo es, de lo contrario podría verse obligado a cambiar. La característica principal que tiene la edición de DB o cualquier control de código fuente es que puede ser actualizada por cualquier cantidad de personas y estos cambios se fusionarán * automáticamente *. Obviamente, alguien necesita fusionar la fusión, pero significa que no se perderá los cambios de la forma en que lo haría una fusión manual. Si hay muchas personas tocando la base de datos, sucede algo. ***cosas malas. Por lo tanto, el control de origen de DB permite que varias personas trabajen en la misma base de datos sin * tocar * it. – DevinB

+0

Desafortunadamente él no es muy bueno en manejarlo a su manera. Si lo fuera, no perdería su trabajo. ;) Y lo que es peor, no es la primera vez que su "proceso" de desarrollo causa problemas.Mi problema es que no tengo poder sobre el tipo, así que todo lo que puedo hacer es presentarlo con evidencia de que debe cambiar sus malos caminos. – JohannesH

0

Una forma de la fuente de la base de datos de control es la de almacenar los datos en y alrededor de la base de datos por separado

  1. tendrás la todas las tablas, procedimientos y secuencias de comandos de función como archivos SQL y agregarlos al control de código fuente.

  2. Exportar los datos de la base de datos como instrucciones de inserción en archivos SQL, cada uno con un tamaño fijo. Este es un proceso engorroso, ya que implicaría una gran cantidad de archivos que deben ser rastreados y controlados.

  3. No estoy seguro de si el VSS/SVN puede leer y mantener el historial de cambios para volcar archivos creados por las opciones de copia de seguridad de la base de datos.

0

No está claro por su pregunta si desea proteger los datos en el Db o los esquemas en el Db. En este último caso, podría identificar todos los esquemas importantes y ejecutar un trabajo cron que extraiga las definiciones de esquema del Db y las inserte automáticamente en un sistema de control de origen (tal vez incluso mediante desencadenadores en los esquemas ??).

Pero esto solo equivale a respaldar el sistema con mayor frecuencia. Para lo que imaginas, necesitarías un control de fuente integrado con las herramientas de Db y no conozco ningún producto que lo haga.

(y tiemblo al pensar en VSS integrado en el estudio de administración de SQL: - (()

+0

He aclarado la pregunta para que quede más claro que estoy hablando del esquema. Sin embargo, productos como DB Ghost y VS DB edition hacen un gran trabajo extrayendo scripts de esquema y generando scripts de cambio entre versiones de esquema. – JohannesH

+0

@Johannes Según mi comentario a la pregunta principal después de su aclaración, ¡la tecnología no está rota, su DBA sí! –

1
de control

Fuente de bases de datos puede ser muy discutible Es diferente de usar control de la fuente de algo que produce un binario porque es posible. 't lock the source: un proc almacenado es una fila en una tabla y no hay una sola tabla para leer para obtener una definición de tabla.

Además, la versión en versión es principalmente un conjunto de sentencias ALTER. y agréguelos al control de fuente. Esto hace que sea más difícil de usar en casos como este.

Para mí, esto es más un error de procedimiento.

¿Por qué no se realizó el cambio desde un script? Olvida dónde vive el guión, pero ¿por qué no hay un guión reproducible y re ejecutable? Tal vez vinculado al número de seguimiento de cambio? Si la base de datos se restablece (cargada desde prod), ¿cómo se volvería a aplicar el cambio para prepararse para la producción? Y otras preguntas

Creo en el control de fuente y lo usamos: pero tiene límites para el trabajo de la base de datos.

+0

Es cierto que escribe las sentencias "crear". ¿Pero esto es un problema? Quiero decir que, por lo que puedo entender, estos scripts de creación se usan para crear una base de datos vacía. A continuación, realiza una diferencia entre la base de datos vacía (de una versión específica) y la base de datos de destino que desea actualizar. Esta diferencia dará como resultado una secuencia de comandos ascendente/descendente que puede ejecutar en el servidor de destino. ¿Es esto un malentendido de mi parte? Si no, entonces no veo el problema en este proceso de implementación. Por favor elabora. – JohannesH

+0

Trabajamos en contra de una copia de producción en lugar de una compilación vacía: queremos asegurarnos de que el código funcione contra datos realistas – gbn

+0

... y es más un problema de personas/procesos para usted, creo – gbn

1

Primero se está acercando a esto incorrectamente. Si el dba no muerde el control de fuente y está cometiendo errores que afectan el sistema, la persona que necesita persuadir es su jefe.

Si ayuda, soy de la vieja escuela también y me encanta tener nuestros objetos de base de datos en control de fuente. Qué bueno poder revertir una tabla sin tener que restaurar toda la copia de seguridad de la base de datos a una ubicación diferente y luego mover la tabla. Cuanto más rápido y simple. Qué bueno poder comparar dos versiones diferentes y ver qué cambió. Qué bueno es implementar un cambio y saber exactamente qué cambios en la base de datos (digamos, por ejemplo, solo doce de los 23 posibles) van con la parte que está implementando y no con algún otro proyecto sin terminar.Qué bueno saber exactamente qué guiones estuvieron involucrados en un cambio en particular que tuvo que deshacer. Qué bueno que nadie está haciendo cambios sobre la marcha en la producción ya que ahora requerimos que todos los cambios de producción sean desde scripts de control de fuente. Hay tantos menos errores y problemas de qué preocuparse.

Sí, fue un cambio en la forma de hacer negocios, pero lo hicimos mediante un cambio de política desde arriba, así que tres no fueron discutidos y el dbas pasó un par de veces y revertió cualquier objeto diferente del control Versión de control de fuente, por lo que ahora nadie pensará en hacer un cambio de base de datos sin estar en control de fuente.

0

Mi respuesta a este mismo problema fue exportar todos los objetos de BD a formato de texto (más de 136,000 de ellos) y luego crear los proyectos de SourceSafe para mantenerlos. Todos los objetos nuevos o modificados en el DB ahora van a la estructura de SourceSafe, mientras que los sin cambios se dejan solos.

1

Como gerente de producto para SQL Compare He hablado con muchos DBA 'tradicionales' que no se sienten cómodos con herramientas de terceros, principalmente porque tienen un sistema que funciona para ellos y que a veces puede ser difícil. Hay muchas situaciones en las que estoy convencido de que se beneficiarían de nuestras herramientas si solo les dieran una oportunidad. Frustrante.

Una cosa que podrías considerar es la próxima herramienta de Red Gate, SQL Source Control. Esto está diseñado para generar control de fuente en SSMS, en otras palabras, no requiere que los DBA abandonen la zona de confort de su entorno de gestión. La mala noticia es que la herramienta aún no se ha lanzado. La buena noticia es que tenemos un Programa de acceso temprano. Por favor visite el siguiente enlace para obtener más información sobre la herramienta:

http://www.red-gate.com/Products/SQL_Source_Control/index.htm

+0

Solo para anunciar que esto ya se ha lanzado y está disponible para evaluar y comprar. http://www.red-gate.com/products/SQL_Source_Control/index.htm –

Cuestiones relacionadas