63

¿Cuál es la mejor forma de controlar la versión de mis objetos de base de datos? Estoy usando Visual Studio 2005/2008 y SQL server 2005. Preferiría una solución que pueda usarse con SVN.¿Cuál es la mejor forma de controlar la versión de los procedimientos almacenados de mi servidor SQL?

+0

Pruebe esta herramienta gratuita: [http://servantt.com] (http://servantt.com/?so) - le permite realizar ingeniería inversa de sus objetos, guardarlos en scripts, comparar bases de datos con scripts, inicie WinMerge para comparar, actualizar scripts o aplicar cambios a la base de datos. – drizin

+0

Pregunta similar http://stackoverflow.com/questions/115369/do-you-use-source-control-for-your-database-items/328307#328307 –

Respuesta

0

Hacemos vuelcos al texto plano y los guardamos en nuestro VCS.

Sería capaz de crear un script de copia de seguridad y compromiso para hacer algo similar.

33

Igual que su otro código, agregue un "Proyecto de base de datos" a su solución de aplicación y conserve los archivos sql utilizados para construir los objetos de la base de datos allí. Utilice el mismo control de versión para esos archivos de código que para la aplicación.

+0

Si usa sms para extraer sus objetos db a archivos fuente, cuidado con qué codificación se usa. Es posible que Unicode se pueda usar sin que lo sepas, al menos eso es lo que he experimentado. Puede ser molesto cuando quieres hacer un cambio rápido a través de un editor de texto y obtienes un galimatías. – Steve

+14

@Steve, su editor es basura si no puede manejar Unicode. – CMircea

+0

@Steve - No puedo imaginar por qué alguna vez querrías usar algo más que Unicode hoy en día. ¡Esto es noviembre de 2009, no 1989! –

15

Mire las herramientas que ofrece RedGate. Tratan específicamente casos de copia de seguridad/restauración/comparación para objetos SQL Server, incluidos los SP. Alternativamente, no estoy seguro, pero creo que Visual Studio te permite verificar sp's en un repositorio. Havent lo intenté yo mismo. Pero puedo recomendar las herramientas RedGate. Me han ahorrado un montón de problemas

+5

Soy el administrador de productos para SQL Source Control, que está disponible para probar el acceso anticipado. Funciona con SVN y se integra con SSMS. Regístrese en http://www.red-gate.com/Products/SQL_Source_Control/index.htm. Comentarios bienvenidos! –

+1

SQL Source Control 1.0 http://www.red-gate.com/products/SQL_Source_Control/index.htm ahora se ha enviado y está disponible para evaluar/comprar. –

+0

Una alternativa gratuita a RedGate es esta aplicación gratuita: http://servantt.com/?so Es muy simple de usar, pero hace muy bien el trabajo. – drizin

1

no sé de una solución pre-envasados, lo siento ...

... pero no que sólo un pequeño script que podrían conectado a la base de datos y guardado todos los procedimientos almacenados en el disco como archivos de texto? Luego, el script agregará todos los archivos de texto al repositorio SVN al hacer una llamada al sistema para 'svn add'.

Entonces es probable que desee que otro script se conecte al DB, elimine todos los procedimientos almacenados y cargue todos los procedimientos almacenados del repositorio desde el disco. Este script necesitaría ejecutarse cada vez que ejecutara "svn up" y tuviera procedimientos almacenados nuevos/modificados.

No estoy seguro de si esto se puede lograr con MS SQL, pero estoy bastante seguro de que MySQL podría acomodar esto. Si escribir extensiones SVN para hacer esto es demasiado complicado, Capistrano admite secuencias de comandos checkin/checkout, IIRC.

3

Utilizamos Subversion y todo lo que hacemos es guardar el código sql en el directorio de nuestro proyecto de subversión y luego enviar el código al repositorio cuando estemos listos y actualizar desde el repositorio antes de comenzar a trabajar en algo que ya está allí.

El verdadero truco es convencer a los desarrolladores para que lo hagan. Nuestros dbas hacen eso al eliminar cualquier proc almacenado (u otro objeto de base de datos) que no esté en Subversion periódicamente. Perder cosas una vez y casi nadie lo hace de nuevo.

+5

¡el amor duro funciona mejor! –

+0

A sus DBA les encantará esta aplicación gratuita, que hace exactamente lo que están haciendo manualmente: http://servantt.com/?so – drizin

5

Utilizo SVN para todo el control de fuente de mi mesa/sproc/función.

No pude encontrar nada que satisficiera mis necesidades, así que terminé escribiendo un utility para permitirme volcar el código en una buena estructura de directorios para usar con SVN.

Para los interesados, la fuente ya está disponible en svn://finsel.com/public/VS2005/GenerateSVNFilesForSQL2005.

+0

Hola Josef, me he registrado y he intentado descargar su herramienta, ya que se ve muy bien pero obtengo la error "No se pudo encontrar el archivo 'C: \ DotNetNuke \ Portals \ 0 \ Repository \ InstallSVNFilesForSQL2005.3a21c4ac-399a-4006-9057-d9f409e13ce3.zip '. "De su sitio? ¿Hay alguna posibilidad de que libere la fuente para esto? –

+0

En cuanto vuelva a hacer mi sitio, publicaré el código en mi SVN público – Josef

+0

@Josef - No puedo acceder a su servidor svn o acceder a su código - ¿sigue activo? ¿Puedo obtener el código de alguna manera? – Conrad

1

La mejor manera - una que funcione para usted.

La manera más fácil: una que no existe actualmente.

se utiliza un método semi-manual de (scripts bajo control de origen, pequeña subgrupo de personas capaces de desplegar procedimientos almacenados en el servidor de producción, cambios en el esquema deben reflejarse en cambios en el subyacente comprobado en los archivos).

Lo que debe hacer es implementar algún tipo de control de fuente vs esquema de volcado de esquema de texto claro ... pero en general 'funciona para nosotros' aunque es un faff la mayor parte del tiempo.

1

Acepto que, si es posible, debe usar proyectos de bases de datos para versionar su base de datos junto con su fuente de aplicación.

Sin embargo, si se encuentra en una situación empresarial, también debe considerar el uso de una herramienta para realizar un seguimiento de los cambios en el servidor, y la versión de esos cambios. El hecho de que el proyecto de base de datos exista no significa que algún administrador o desarrollador no pueda cambiar esos sprocs en el servidor.

Cuestiones relacionadas