E 'possibile utilizzare MS VS database di progetto come una soluzione completa per il controllo delle versioni del database?

StackOverflow https://stackoverflow.com/questions/4137844

Domanda

Nel nostro progetto abbiamo diversi database di produzione e molti sviluppatori. Ogni database di produzione rappresenta un po ' "versione sottoprogetto / localizzazione". Usiamo SQL Server 2008.

Così, ho bisogno di sviluppare la strategia base di dati delle versioni con MS Visual Studio database del progetto. Ho letto un sacco di articoli su database di versioning e progetti di database, ma ho ancora un sacco di domande:

  1. Come sviluppatori dovrebbero attuare loro cambia a db progetto? (Best practice)

  2. Come generare la praticabile 100% "Ultima versione" script deploy senza intervento umano (saltando alcuni oggetti, riscrivendo alcune modifiche, ecc)?

  3. Come gestire i dati modifiche con SM Progetto di Visual Database Studio? io sapere di script pre / post-implementazione, ma credo che cant risolvere questo problema. (Esempio: ho bisogno di rimappare qualche tavolo in un altro).

La "soluzione ideale" sarebbe:

  1. Gli sviluppatori genera e mantiene database di progetto per il database [ProductionDB].

  2. Con la nuova versione schiero database di progetto alla [ProductionDB] con tutto il necessario modifiche.

  3. Gli sviluppatori modifiche al database di progetto e scrive alcuni script di manipolazione dei dati per i cambiamenti concreti.

  4. Con la nuova versione schiero database di progetto alla [ProductionDB] con tutte le modifiche necessarie.

Quindi, la domanda finale: È posible da usare database di progetto per le finalità sopra descritte o qualcuno usa simile scenario / soluzione

?

PS: ho già letto in seguito a discussioni:

  1. cambia delle versioni [chiusa]
  2. Come fare versione che mio MS database SQL in SVN?
  3. alla ricerca di soluzione per il database delle versioni
  4. Esiste un sistema di controllo della versione per la struttura del database cambiamenti?
È stato utile?

Soluzione

progetto di database viene utilizzato proprio per la maggior parte dei motivi che avete qui menzionati -

  1. Gli sviluppatori solo check-out il file di script di database, apportare le modifiche e controllare di nuovo in. Intendiamoci saranno cambiando file sql e non direttamente gli oggetti presenti in qualsiasi database dev. Quindi se avete bisogno di aggiungere due colonne di una tabella di database, modificherete il creare script di tabella per questa tabella, e NON scrivere uno script alter per questa tabella.

  2. Se avete il bersaglio vecchia versione dello schema DB - si può solo distribuire questo progetto con i file più recenti a quel database e uno script di distribuzione andranno creati (con le necessarie dichiarazioni alter). C'è un'impostazione progetto che consente di optare se lo script di distribuzione deve essere eseguito anche nei confronti del db quando si 'deploy'.

  3. Lo script di distribuzione può essere un risultato finale che è testato separatamente contro una copia prod e poi applicata a prod come una patch.

A proposito di script di manipolazione dei dati non sono molto sicuro, ma per tutti gli altri scopi che lei ha citato, un progetto di database è perfetto.

Altri suggerimenti

quello che hai descritto è la ragione esiste il progetto di database.

Per rispondere alle vostre domande:

  1. E 'allo sviluppatore. È possibile lavorare in Visual Studio e modificare i file di progetto direttamente o si modifica una copia diretta del database in Mgmt studio che l'uso dello schema confrontare in VS per sincronizzare le modifiche al progetto. Ho usato per un paio di mesi e trovo entrambi bene il lavoro, anche se io tendo a modificare i file di progetto direttamente più spesso.

  2. La distribuzione del progetto genera versione più recente, se si seleziona la casella di far cadere il db di destinazione prima. È possibile farlo senza alcun intervento umano chiamando VSDBCMD durante la build

  3. Gli script di distribuzione pre / post sono pensati solo per quello che alludi. Un esempio potrebbe essere quello di selezionare tutti i dati da una tabella in una tabella temporanea e troncare durante la pre-Deploy, lasciare che il manico del progetto la migrazione dello schema e quindi aggiungere nuovamente durante la post-deploy. Che può diventare difficile, ma il problema non è mai stato facile da risolvere.

Spero che questo aiuti.

La questione dei dati è difficile da risolvere. Qui a Red Gate abbiamo avuto molte richieste per questo per il nostro SQL controllo del codice sorgente strumento , che ha paralleli con progetti VS database. La buona notizia è che stiamo aggiungendo attivamente il supporto per questo, e dovrebbe avere una build presto per provare prima di Natale. Se siete interessati, semplicemente registrarsi per le notifiche Early Access a http://www.surveymk.com/s / SqlSourceControl_EapSignup . Ci piacerebbe ricevere i tuoi commenti.

Si può decidere di avere uno sguardo alla open-source bsn ModuleStore toolkit , che cerca di implementare questo flusso di lavoro (e in realtà fa anche fare più di quello).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top