2009-06-05 14 views
8

Sono un ingegnere di costruzione e responsabile del layout del controllo sorgente. Dobbiamo mantenere una versione di tutti gli oggetti del database e anche raggruppare le modifiche insieme agli script di rollback per i push alla produzione. Abbiamo ambienti di sviluppo, controllo qualità e produzione e ci sono diverse versioni degli oggetti del database in ciascuno. Un'area in cui abbiamo problemi è con la tabella crea vs gli alter. Gli sviluppatori controlleranno gli alter ma per ricreare il database che ci serve per creare. Qualsiasi idea sarebbe apprezzata.Script SQL in Subversion

+0

In realtà non sono sicuro di cosa intendi per "Un'area in cui ci sono problemi è con la tabella crea contro chi altera, gli sviluppatori controlleranno gli alter ma per ricreare il database di cui abbiamo bisogno.", Potresti essere più specifico? – marcgg

+0

Penso che significhi che controllano un file di codice SQL per un SP che inizia con "ALTER PROC", ma usano/hanno bisogno di "CREATE PROC" in modo da poter creare il DB da zero. – Paul

+0

Questo è esattamente quello che intendevo @Paul grazie per il chiarimento. –

risposta

2

Questo articolo dovrebbe rispondere la maggior parte se non tutte le domande

http://odetocode.com/Blogs/scott/archive/2008/01/30/11702.aspx

+0

Questo articolo fondamentalmente mi chiede nuovamente la mia domanda, la sezione 3 è ciò che sto cercando di realizzare. Sto cercando una struttura e/o un processo che mi permetta di eseguire la versione dei miei database e soddisfare gli altri vincoli della mia domanda. Grazie per l'articolo –

+0

lmgtfy "site: odetocode.com versioning del database" sembra abbastanza promettente – dotjoe

+0

Questo sito contiene una grande quantità di informazioni su problemi relativi al controllo delle versioni, ci vuole un po 'per condividerle insieme, ma vale la pena dare un'occhiata. Grazie –

1

Si dovrebbe esaminare come framework come rotaie di gestire le migrazioni

http://dizzy.co.uk/ruby_on_rails/cheatsheets/rails-migrations

+0

Non sono davvero alla ricerca di modi per generare il database solo i modi per la versione e tenere traccia di ciò che sta accadendo con esso. –

+0

Se si utilizzano le migrazioni, tutto verrà inserito in sovversione e sarà possibile utilizzarlo per tenere traccia di tutto. Inoltre è un modo molto interessante per gestire le modifiche ai DB. Non credo di aver capito completamente i tuoi problemi, ho pensato – marcgg

3

Sono un grande fan di http://www.liquibase.org/. Ti consente di tenere traccia delle versioni del tuo database, inclusa la possibilità di "aggiornare" e "rollback" il tuo schema/dati.

Hanno un bel sintassi XML che ha sfornato il supporto per refactoring comuni, compresi quelli descritti nel http://databaserefactoring.com/

Essi hanno anche plugin Eclipse per aiutare a creare gli script di cambiamento, e la formica compito di per integrare nella vostra build.

La mia unica lamentela è che è basato su Java e mi piace installare java sul mio build server per progetti .NET. In quel caso ho sentito cose positive su http://code.google.com/p/migratordotnet/.

+0

Ho votato perché mi piace il collegamento a migratordotnet. Dovrò esaminare in particolare il compito di MSBuild. Grazie –

0

ti posso consigliare tale scenario:

  1. Dbunit per la popolazione di dati (ad esempio dizionari, masterdata e altre informazioni di database critico)
  2. Liquibase di dbdeploy per il refactoring del database. Nella mia mente, liquibase è più strumento orientato al refactoring e dbdeploy - più orientato ai processi (vale a dire bisogna fare di più con le mani, ma semplifica lo sviluppo, i test e il processo di supporto alla produzione).

Se la società utilizza ORM, è possibile creare al volo lo schema di database "diff" basato sul motore ORM. Inoltre, se il tuo prodotto funziona con diversi database, avrai un ulteriore livello di complessità. Sfortunatamente, né dbdeploy, né liquiase mi hanno soddisfatto dello sviluppo/refactoring dei database multipli.