SfondoSQL
Il mio gruppo ha Database Server 4 SQL:
- Produzione
- SVS
- prova
- Dev
Lavoro nell'ambiente Dev. Quando arriva il momento di promuovere gli oggetti su cui ho lavorato (tabelle, viste, funzioni, stored proc), faccio una richiesta al mio manager, che promuove Test. Dopo il test, invia una richiesta a un amministratore che promuove l'UAT. Dopo aver testato con successo gli utenti, lo stesso amministratore promuove la produzione.
Il problema
L'intero processo è scomodo per alcuni motivi.
- Ogni persona deve tracciare manualmente le proprie modifiche. Se aggiorno, aggiungo, rimuovo tutti gli oggetti di cui ho bisogno per rintracciarli in modo che la mia richiesta di promozione contenga tutto ciò che ho fatto. In teoria, se mi manca qualcosa, test o UAT dovrebbero prenderlo, ma questo non è certo ed è uno spreco di tempo del tester, comunque.
- Un sacco di modifiche apportate sono iterative e eseguite in una GUI, il che significa che non c'è alcuna registrazione di quali modifiche ho apportato, solo il risultato finale (almeno per quanto ne so).
- Siamo in una fase abbastanza precoce della costruzione di un data mart, quindi la maggior parte delle modifiche apportate, almeno per il conteggio, sono minori: modifica del tipo di dati per una colonna, modifica dei nomi delle tabelle come abbiamo cristallizzare ciò che essi saranno utilizzati per, funzioni e stored procedure, ecc
tweaking La questione
persone hanno fatto questo tipo di lavoro per decenni, quindi immagino ci hanno avuto modo di essere un modo molto migliore per gestire il processo. Quello che mi piacerebbe è se potessi eseguire un diff tra due database per vedere come fosse diversa la struttura, usare quella diff per generare uno script di modifica, usare quello script di cambiamento come richiesta di promozione. È possibile? In caso contrario, ci sono altri modi per organizzare questo processo?
Per la cronaca, siamo un negozio Microsoft al 100%, aggiornando ora tutto a SQL Server 2008, quindi qualsiasi strumento disponibile in quel pacchetto sarebbe equo.
Devo chiarire che non sono necessariamente alla ricerca di strumenti di diffusione. Se questo è il modo migliore per sincronizzare i nostri ambienti, allora va bene, ma se c'è un modo migliore, lo sto cercando.
Un esempio di ciò che voglio davvero sono le migrazioni in Ruby on Rails. Morto sintassi semplice, tutte le modifiche sono ben documentate automaticamente e, per impostazione predefinita, determinare quali migrazioni devono essere eseguite è quasi banalmente semplice. Mi piacerebbe se ci fosse qualcosa di simile a questo per SQL Server.
La mia soluzione ideale è 1) facile e 2) difficile da incasinare. Le migrazioni delle rotaie sono entrambe; tutto ciò che ho fatto finora su SQL Server non è né l'uno né l'altro.
Utilizzare gli script per aggiornare il database e tracciare manualmente gli script di aggiornamento è esattamente il tipo di situazione che stavo cercando di evitare . – kubi
Non si "tracciano" gli aggiornamenti. Trattate gli aggiornamenti del database come miglioramenti e funzionalità del codice. Consideri gli script come parte dell'albero sorgente e li tratti come fonte, e li controlli in controllo di versione come sorgente, li rivedi come fonte ecc. Come non evitare di scrivere i file .cs del progetto. –