Qual è il modo migliore per controllare la versione delle stored procedure del mio server SQL?

Qual è il modo migliore per controllare la versione dei miei oggetti di database? Sto usando Visual Studio 2005/2008 e SQL Server 2005. Preferirei una soluzione che possa essere utilizzata con SVN.

Come il tuo altro codice, aggiungi un “Progetto database” alla tua soluzione applicativa e mantieni i file sql usati per build gli oggetti del database. Utilizzare lo stesso controllo di versione per quei file di codice come per l’applicazione.

Guarda gli strumenti offerti da RedGate. Trattano in modo specifico casi di backup / ripristino / confronto per oggetti di SQL Server inclusi SP. In alternativa, non sono sicuro, ma penso che Visual Studio ti permetta di controllare gli sp in un repository. L’ho provato anche io. Ma posso consigliare gli strumenti RedGate. Mi hanno risparmiato un sacco di problemi

Io uso SVN per tutto il mio controllo sorgente di tabella / sproc / funzione.

Non sono riuscito a trovare nulla che soddisfacesse le mie esigenze, quindi ho finito per scrivere un’utilità che mi permettesse di scaricare il codice in una struttura di directory piacevole da utilizzare con SVN.

Per chi fosse interessato, il sorgente è ora disponibile su svn: //finsel.com/public/VS2005/GenerateSVNFilesForSQL2005 .

Usiamo Subversion e tutto ciò che facciamo è salvare il codice sql nella directory per il nostro progetto di subversion e quindi impegnare il codice nel repository quando siamo pronti e aggiornare dal repository prima di iniziare a lavorare su qualcosa già lì.

Il vero trucco è convincere gli sviluppatori a farlo. Il nostro dbas lo fa cancellando qualsiasi proc memorizzato (o altro object di database) che non sia periodicamente in Subversion. Perdere cose una volta e praticamente nessuno lo fa più.

Non so di una soluzione preconfezionata, mi dispiace …

… ma non potresti semplicemente un piccolo script collegato al database e salvato tutte le stored procedure sul disco come file di testo? Quindi lo script aggiungerà tutti i file di testo al repository SVN effettuando una chiamata di sistema a “svn add”.

Quindi probabilmente vorrai un altro script per connettersi al DB, eliminare tutte le stored procedure e caricare tutte le stored procedure del repository dal disco. Questo script dovrebbe essere eseguito ogni volta che si esegue “svn up” e si sono verificate nuove / stored procedure.

Non sono sicuro che ciò possa essere realizzato con MS SQL, ma sono abbastanza fiducioso sul fatto che MySQL possa soddisfare questo problema. Se scrivere estensioni SVN per farlo è troppo complicato, Capistrano supporta gli script di checkin / checkout, IIRC.

Il modo migliore – quello che funziona per te.

Il modo più semplice – quello che al momento non esiste.

Utilizziamo un metodo semi-manuale (script sotto il controllo del codice sorgente, un piccolo sottoinsieme di persone in grado di distribuire stored procedure sul server di produzione, le modifiche allo schema dovrebbero riflettersi nelle modifiche ai file sottostanti registrati).

Quello che dovremmo fare è implementare una sorta di controllo del codice sorgente rispetto alla copia del dump dello schema in chiaro … ma generalmente “funziona per noi” anche se è una vera sfortuna per la maggior parte del tempo.

Sono d’accordo che, se ansible, dovresti utilizzare i progetti di database per la versione del tuo db insieme all’origine dell’applicazione.

Tuttavia, se ci si trova in uno scenario aziendale, si dovrebbe anche considerare l’uso di uno strumento per tenere traccia delle modifiche sul server e la versione di tali modifiche. Solo perché il progetto del database esiste, non significa che alcuni amministratori o sviluppatori non possono cambiare questi sproc sul server.

Facciamo i dump in testo semplice e li manteniamo nel nostro VCS.

Saresti in grado di creare script di backup e commit per fare qualcosa di simile.

Sto usando scriptdb.exe da http://scriptdb.codeplex.com/

E potrebbe essere utile utilizzare il metodo delle rotaie: http://code.google.com/p/migratordotnet/wiki/GettingStarted

Usa versaplex per scaricare il tuo schema: http://code.google.com/p/versaplex/

Versaplex viene fornito con Schemamatic, che legge lo schema del database (tabelle, SP, ecc.) E anche i dati (i dati vengono scaricati come CSV). Lo uso, con SVN e git, ed è fantastico 🙂 Se hai bisogno di aiuto fammi sapere, vale la pena provare! http://github.com/eduardok/versaplex