Escogemos guiar todo, y eso incluye todos los procedimientos almacenados y los cambios de esquema. No se necesitan herramientas wysiwyg ni programas sofisticados de "sincronización".
Los cambios de esquema son fáciles, todo lo que necesita hacer es crear y mantener un único archivo para esa versión, incluidos todos los cambios de esquema y datos. Este se convierte en el script de conversión de la versión x a la x + 1. Luego puede ejecutarlo contra una copia de seguridad de producción e integrarlo en su 'compilación diaria' para verificar que funcione sin errores. Tenga en cuenta que es importante no cambiar ni eliminar los esquemas/datos ya escritos que cargan sql ya que puede terminar rompiendo cualquier sql escrito más tarde.
-- change #1234
ALTER TABLE asdf ADD COLUMN MyNewID INT
GO
-- change #5678
ALTER TABLE asdf DROP COLUMN SomeOtherID
GO
Para los procedimientos almacenados, se elige a un solo archivo por sproc, y utiliza la gota/crear la forma. Todos los procedimientos almacenados se vuelven a crear al momento de la implementación. La desventaja es que si se realizó un cambio fuera del control de la fuente, el cambio se pierde. Al mismo tiempo, eso es cierto para cualquier código, pero su DBA debe ser consciente de esto. Esto realmente impide que personas ajenas al equipo se deshagan de sus procedimientos almacenados, ya que sus cambios se pierden en una actualización.
El uso de SQL Server, la sintaxis es la siguiente:
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[usp_MyProc]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [usp_MyProc]
GO
CREATE PROCEDURE [usp_MyProc]
(
@UserID INT
)
AS
SET NOCOUNT ON
-- stored procedure logic.
SET NOCOUNT OFF
GO
El único que queda por hacer es escribir un programa que recopila todos los archivos individuales y crea un nuevo archivo con todo el conjunto de cambios (como una sola secuencia de comandos). Para ello, primero agregue los cambios de esquema y vuelva a generar la estructura de directorios e incluya todos los archivos de procedimientos almacenados.
Como una ventaja para escribir todo, mejorará mucho al leer y escribir SQL. También puede hacer que todo este proceso sea más elaborado, pero este es el formato básico de cómo controlar el origen de todos los sql sin ningún software especial.
anexo: Rick tiene razón en que perderá permisos en los procedimientos almacenados con DROP/CREATE, por lo que es posible que necesite escribir otro script que volverá a habilitar los permisos específicos. Este script de permisos sería el último en ejecutarse. Nuestra experiencia encontró más problemas con ALTER versos DROP/CREATE semántica. YMMV
Hacer más de una "Respuesta Aceptada" una solicitud de función;) –
Hmmm ... ¡tal vez debería! – Dana
posible duplicado de [¿Utiliza el control de origen para sus elementos de base de datos?] (Http://stackoverflow.com/questions/115369/do-you-use-control-source-for-your-database-) – user