¿Cómo agrego los procedimientos almacenados de SQL Server existentes al control de origen?

En este momento tenemos un grupo de serveres de bases de datos con procedimientos almacenados que se ejecutan en ellos y que están mal documentados y no existen en ninguna otra parte.

Cuando se realiza un cambio en uno, no hay ningún logging, y es realmente difícil descubrir por qué algo que funciona de repente falla.

Recientemente hemos cambiado al uso de un control de versión adecuado usando SVN, así que esperaba agregar estos procedimientos almacenados al control de versiones.

Somos una tienda .Net, y soy consciente de que existe un tipo de proyecto de Database . ¿Sería ese un buen enfoque?

De forma alternativa, podría simplemente mantener los procedimientos almacenados como files de text y operarlos, pero me pregunto cuáles son los molestos pasos de implementación implicados al hacerlo.

En Visual Studio, creé un proyecto vacío y le agregué los scripts. Es parte de mi solución de esquema de server. Ahora cada script en control de fuente. También agregué una estructura de carpetas para tratar de mantener la cordura. Cuando finalice la aplicación, tendremos probablemente cerca de 3000 scripts bajo control de fuente en múltiples esquemas de server. No digo que esto sea lo mejor, pero está funcionando para nuestro proyecto. La solución también tiene una utilidad que utiliza SMO para ejecutar / implementar todos los scripts, de modo que todo está contenido en una sola solución. Captura de pantalla adjunta que muestra parte de la estructura para su reference …

Scripts de control de fuente

Echa un vistazo al control fuente sql de networkinggate. Tiene una interfaz integrada en SSMS y puede integrarse con SVN.

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

Un proyecto de database es una buena opción, en mi opinión. Puede importar toda la database, incluidas tablas, vistas, procedimientos almacenados, etc. Visual Studio utilizará esta información para build un model en la memory de la database.

Puede usar esto para varios propósitos, incluido el asegurarse de que sus procedimientos almacenados accedan correctamente a las tablas. Por ejemplo, me pilló tratando de insert un parámetro Integer en una columna smallint.

Sí, recomendaría un proyecto de database: puede sincronizar los elementos de la database (tablas / procedimientos almacenados, etc.) en cualquier dirección: files de origen a DB, o DB a files de origen.

Puede comenzar creando un proyecto de database vacío, y luego sincronizar desde la (s) database existente (s) a su proyecto, lo que crea los scripts .sql create para usted.

Y también puede usar el proyecto de database para crear scripts de implementación. Muy útil.

Utilizamos el proyecto de database y tenemos buenos resultados con él. Todo el DML existe en el proyecto (más de 3000 elementos).

Los desarrolladores deben realizar cambios en el DML en el control de origen y registrarlos, y solo se promocionará / implementará lo que esté registrado.

Nuestro control de fuente es TFS, y me di count de que borrar los processs de la interfaz VS no siempre marca el process de eliminación en el control de fuente. No estoy seguro de qué SVN hace con él.