Ho provato sia il progetto di database di RedGate che Visual Studio e preferisco memorizzare la definizione del database nel progetto di database. Non appena il database diventa parte della soluzione, è possibile utilizzare il provider di controllo del codice sorgente preferito. La maggior parte ha un'eccellente integrazione con Visual Studio.
Con gli strumenti SSDT hai la "versione più recente" della definizione del database, che ti consente di fare facilmente confronti tra schemi e generare script di aggiornamento dello schema.
Detto questo, lo schema di solito è solo una parte dell'equasion. Nella vita reale si scopre che i database hanno già molti dati. E i miei utenti tendono a rimanere piuttosto delusi quando lo perdono.
Quindi, non appena ho implementato la versione 1.0, è necessario mantenere gli script di aggiornamento. A volte questi contengono solo modifiche allo schema, ma molte volte ho bisogno di creare valori predefiniti basati sul contenuto di qualche altra tabella, ho bisogno di rilasciare un vincolo particolare fino a quando non ho seminato i dati, ecc. Di solito semplicemente l'aggiornamento dello schema non lo taglia del tutto. La mia preferenza è quella di avere questi script di aggiornamento in una cartella separata anche nel progetto del database. Questi di solito sembrano "aggiornamento da v1.0 a v1.1".
I miei database hanno sempre una tabella di riferimento che mi dice il numero di versione corrente, quindi posso bloccare gli aggiornamenti incompatibili. La prima affermazione nei miei script di aggiornamento controlla la versione corrente e salva se è diversa da quella prevista.
Un altro vantaggio dei progetti di database è la possibilità di distribuire diversi set di dati basati sullo stesso schema. Ho un set di dati diverso per lo sviluppo, il team QA, il test di accettazione dell'utente e per i test di integrazione automatizzata. Poiché un progetto di database può avere solo 1 script post-distribuzione, il trucco qui è creare un nuovo progetto di database che faccia riferimento al progetto "master" e rendere il set di dati personalizzato parte dei processi post-distribuzione di quel progetto.
Questi erano i miei 2 centesimi, qualunque cosa tu provenga, soprattutto, deve adattarsi a te e al tuo team e, si spera, supportarti con la maggior parte dei compiti comuni.