Nota: não estou perguntando sobre o controle de versão completo.
Existe alguma maneira automática de manter um histórico de procedimentos armazenados no SQL Server.
Semelhante à forma como o Google Docs mantém automaticamente um histórico de versões de documentos e a Wikipedia mantém automaticamente um histórico de versões de artigos.
Não quero que os usuários atualizando procedimentos armazenados também tenham que manter um repositório de procedimentos armazenados. Isso é muito trabalho e as pessoas não vão fazer isso.
Espero que isso seja algo que eu possa ativar no SQL Server ...
(E por procedimentos armazenados realmente quero dizer funções, gatilhos, etc. Basicamente tudo em Programabilidade.)
Postei em https://stackoverflow.com/questions/14522224/how-to-keep-history-of-sql-server-stored-procedure-revisions primeiro porque suspeito que obteria mais visualizações lá.
Embora eu concorde totalmente que o controle de origem é a maneira correta de fazer isso, também entendo que nem todos os ambientes são disciplinados o suficiente para depender apenas disso (se for o caso), e que às vezes as alterações precisam ser feitas diretamente para manter o aplicativo executando, salve um cliente, o que você tem.
Você pode usar um gatilho DDL para manter todas as revisões em uma tabela em um banco de dados separado (e, claro, fazer backup desse banco de dados com frequência). Supondo que você tenha um banco de dados utilitário:
Agora em seu banco de dados, primeiro vamos pegar o que chamaremos de "controle inicial" - a versão atual dos procedimentos armazenados:
Agora, para capturar as alterações subsequentes, adicione um gatilho DDL ao banco de dados:
Com o tempo, será fácil ver e comparar as alterações nos procedimentos, observar os novos procedimentos serem adicionados ao sistema, ver os procedimentos serem descartados e ter uma boa ideia de com quem falar sobre qualquer um desses eventos.
Mais informações aqui:
http://www.mssqltips.com/sqlservertip/2085/sql-server-ddl-triggers-to-track-all-database-changes/
Eu não acho que exista uma maneira de manter automaticamente seu código-fonte SQL sob controle de versão. Quero dizer, com ferramentas nativas do SQL Server. Eu acho que você pode acabar usando git ou svn, mas a melhor solução para mim foi comprar o controle de origem da Red Gate para manter bancos de dados (e procedimentos armazenados) sob controle de versão.