7

Il mio DBA ha appena perso alcuni lavori di sviluppo che ha fatto sul nostro database di sviluppo. Povero amico. Quindi, naturalmente, il nostro manager gli ha chiesto, durante la nostra riunione sullo stato, come ciò potesse accadere e come avremmo potuto evitare che ciò accadesse in futuro. "Il controllo del codice potrebbe alleviare il problema" ho suggerito ... La risposta del dba; "No, eseguiamo semplicemente il backup del server più spesso". Ora vorrei aiutare il mio DBA a capire quale sia il controllo del codice sorgente e come si adatti allo schema e allo sviluppo del database su quello schema.Come si inserisce un grande database esistente (schema) sotto il controllo del codice sorgente?

In precedenza ho cercato di spiegargli che non c'è niente di speciale nel codice sorgente dietro le tabelle e le stored procedure e dovrebbe essere in un sistema di controllo del codice sorgente (TFS in questo caso). Ma lui non ha morso. Ora, mentre questo misap è nella memoria recente, vorrei prendere un'altra pugnalata a questo.

Quindi la mia domanda è, sai di qualche buon consiglio che potrei trasmettere al mio DBA e forse anche un paio di risorse che spiegano come si andrebbe a migrare uno schema DB per essere sotto il controllo del codice sorgente e trovare il posto giusto nei processi di compilazione e implementazione?

Un paio di fatti riguardanti l'ambiente:

  • controllo del codice sorgente su un TFS 2008 Server.
  • Il database è un server MS SQL 2008 con> 300 tabelle e> 300 altri oggetti (sprocs, trigger, funzioni ecc.).

Chiarimento: Abbiamo usato DB fantasma e altre soluzioni di gestione dei cambiamenti su altri progetti con altri amministratori di database, in passato. Abbiamo persino la licenza per l'edizione VS DB! Il problema sta nel convincere il DBA a pensare a questo modo di sviluppare il database. Lui è davvero vecchia scuola (ad esempio la migrazione delle modifiche manualmente dall'ambiente all'ambiente), e sfortunatamente è l'unico che sa qualcosa su questo particolare DB.

+0

ho ancora visto nessun modo semplice per ottenere oggetti di SQL Server in controllo del codice sorgente. È sempre un briciolo di lavorare dagli script sul tuo HDD. Quindi alcuni putz possono sempre entrare, premere "Modifica" su quel processo memorizzato e via. Quindi, mi interessa se c'è un modo migliore (tm). – Eric

+2

Dato il chiarimento sembra che tu non abbia un problema "tecnologico" ma un problema di "persone". Nessuna quantità di strumenti perfetti cambierà idea su come fa il suo lavoro. Sembra un caso di averne bisogno dettato a lui tramite un'autorità superiore. –

+0

Probabilmente hai ragione. – JohannesH

risposta

0

non si può davvero mettere un grande database sotto il controllo del codice sorgente, quindi il tuo DBA è giusto.

quello che puoi fare praticamente è mettere il tuo schema sotto il controllo del codice sorgente, e forse alcune tabelle di "configurazione" piuttosto piccole.

+0

Intendevo lo schema ... Mi dispiace chiarirò. – JohannesH

+0

È possibile fino a quando tutto è in formato di script, ma i file di grandi dimensioni rallentano le prestazioni, ma la mia ipotesi e la mia raccomandazione è che stiamo parlando solo dello script di schema, come hai sottolineato. –

2

Se si utilizza Visual Studio Team System, si consiglia di avere una pugnalata alla loro edizione di database (penso che in questi giorni viene fornito con la Developer Edition se si è un abbonato MSDN). Ciò che questo ti permetterà di fare è di codificare tutti gli schemi, i proc memorizzati, le viste, i trigger, ecc. E il controllo dei sorgenti questi. Questo dovrebbe anche rendere il dba più comodo poiché lavorerà con una versione "Database" dello strumento piuttosto che con la versione "Developer" (la denominazione può andare molto bene con le persone). Quando apporti le modifiche da Visual Studio, puoi gestire le modifiche degli script mentre lavori e il sorgente li controlla.

+0

Penso che siamo d'accordo ... Si potrebbe pensare che il mio caro DBA dovrebbe saltare su uno strumento come l'edizione VS DB. Ma lui non lo è. – JohannesH

1

Se la società ha una licenza MSDN, è possibile utilizzare l'edizione del database di Visual Studio. C'è un video tutorial su di esso here.

Non ho il potere di acquisto, quindi non so quali sono i guasti. Ma ha la capacità di controllare tutte le parti di uno schema DB e include la creazione di script di modifica e l'auto-distribuzione direttamente da VS, se lo si desidera (non lo consiglierei).

In generale, tuttavia, è piuttosto solido come opzione di controllo del codice sorgente del database.

+0

Grazie per il collegamento, verrà inoltrato tempestivamente. Abbiamo una licenza per VS DB Edition ma il problema principale è convincere il mio DBA che dovrebbe usarlo. ;) Lui è * davvero * vecchia scuola. Voglio dire, abbiamo utilizzato DB Ghost e altre soluzioni di gestione delle modifiche di DB con altri progetti e altri DBA, ma questo DBA è persistente per apportare modifiche direttamente a ciascun ambiente. – JohannesH

+0

In tal caso, se è * bravo * a farlo a modo suo, e presumo che lo sia, altrimenti potrebbe essere costretto a cambiare. La caratteristica principale dell'edizione DB o di qualsiasi controllo sorgente è che può essere aggiornata da un numero qualsiasi di persone e che le modifiche saranno * automaticamente * unite. Ovviamente, qualcuno ha bisogno di collegare l'unione, ma significa che non mancheranno le modifiche nel modo in cui sarebbe un'operazione di unione manuale. Se ci sono molte persone che toccano il database, succede qualcosa. ***brutta roba. Quindi, il controllo del codice sorgente DB consente a più persone di lavorare sullo stesso database senza * toccarlo *. – DevinB

+0

Sfortunatamente non è molto bravo a gestirlo a modo suo. Se lo fosse, non perderebbe il lavoro. ;) E ancora peggio non è la prima volta che il suo "processo" di sviluppo ha causato problemi.Il mio problema è che non ho alcun potere sul ragazzo, quindi tutto ciò che posso fare è presentarlo con prove convincenti che dovrebbe cambiare i suoi modi cattivi. – JohannesH

0

Un modo per procurarsi database di controllo è quello di memorizzare i dati e sul database separatamente

  1. si può avere il tutte le tabelle, le procedure e gli script di funzione come file SQL e aggiungerli al controllo del codice sorgente.

  2. Esportare i dati del database come istruzioni di inserimento in file SQL, ciascuno con una dimensione fissa. Si tratta di un processo ingombrante poiché implicherebbe un sacco di file che devono essere monitorati e controllati.

  3. Non sono sicuro che VSS/SVN sia in grado di leggere e conservare la cronologia delle modifiche ai file di dump creati dalle opzioni di backup del database.

0

Non è chiaro dalla domanda se si desidera proteggere i dati nel Db o gli schemi nel Db. In quest'ultimo caso, è possibile identificare tutti gli schemi importanti ed eseguire un cron job che estrae le definizioni dello schema dal Db e li inserisce automaticamente in un sistema di controllo del codice sorgente (forse anche tramite trigger sugli schemi ??).

Ma questo equivale ancora a supportare il sistema più spesso. Per quello che prevedi avrai bisogno del controllo del codice sorgente integrato con gli strumenti Db e non conosco nessun prodotto che lo faccia.

(e mi vengono i brividi a pensare a VSS integrato in studio di gestione di SQL: - (()

+0

Ho chiarito la domanda in modo che sia più chiaro che sto parlando dello schema. Tuttavia, prodotti come DB Ghost e VS DB edition svolgono un ottimo lavoro nell'estrarre script di schemi e generare script di modifica tra versioni dello schema. – JohannesH

+0

@Johannes Come da mio commento alla domanda principale dopo il tuo chiarimento, la tecnologia non è rotta, il tuo DBA è! –

1
controllo

Fonte per i database può essere molto controversa E 'diverso da usare controllo del codice sorgente per qualcosa che produce un binario perché è possibile. bloccare la sorgente: un processo memorizzato è una riga in una tabella e non c'è una sola tabella da leggere per ottenere una definizione di tabella

Inoltre, la versione alla versione è principalmente un insieme di istruzioni ALTER. e li aggiungo al controllo del codice sorgente, il che rende più difficile l'utilizzo in casi come questo.

Per me, questo è più un errore procedurale.

Perché il cambiamento non è stato eseguito da uno script? Dimentica dove vive la sceneggiatura, ma perché non ci sono script riproducibili e riproducibili? Forse collegato al numero di tracciamento delle modifiche? Se il database viene ripristinato (caricato da prod), in che modo la modifica sarà stata riapplicata per preparare la produzione. E altre domande.

Credo nel controllo del codice sorgente e lo usiamo: ma ha dei limiti per il lavoro del database.

+0

È vero che si codificano le istruzioni "create". Ma questo è un problema? Voglio dire, per quanto posso capire, questi script di creazione vengono utilizzati per creare un database vuoto. Quindi fai una differenza tra il database vuoto (di una versione specifica) contro il db di destinazione che vuoi aggiornare. Questo diff porterà a uno script up-down-down che è possibile eseguire sul server di destinazione. Questo è un fraintendimento da parte mia? Io no, quindi non vedo il problema in questo processo di distribuzione. Si prega di elaborare. – JohannesH

+0

Lavoriamo contro una copia della produzione piuttosto che una build vuota: vogliamo garantire che il codice funzioni contro dati realistici – gbn

+0

... ed è più un problema di persone/processi per voi penso – gbn

1

Per prima cosa ci si avvicina in modo errato. Se il dba non morde sul Controllo Sorgente e sta commettendo errori che influenzano il sistema, la persona che devi persuadere è il suo capo.

Se aiuta, anche io vengo dalla vecchia scuola e adoro avere i nostri oggetti di database nel controllo del codice sorgente. Che bello essere in grado di ripristinare una tabella senza dover ripristinare l'intero backup del database in una posizione diversa e quindi spostare la tabella. Quanto più veloce e semplice. Che bello essere in grado di confrontare due diverse versioni e vedere cosa è cambiato. Che bello distribuire un cambiamento e sapere esattamente quali cambiamenti del database (diciamo, ad esempio, solo dodici dei 23 possibili) andare con la parte che si sta distribuendo e non con qualche altro progetto incompiuto.Che bello sapere esattamente quali script sono stati coinvolti in un particolare cambiamento che hai dovuto eseguire. Che bello che nessuno stia apportando modifiche in tempo reale alla produzione poiché ora richiediamo che tutte le modifiche alla produzione siano da script di controllo del codice sorgente. Ci sono così tanti errori e problemi di cui preoccuparsi.

Sì, è stato un cambiamento nel modo in cui abbiamo fatto affari, ma lo abbiamo fatto attraverso un cambiamento di politica da alto, quindi tre non erano argomenti e il db ha passato un paio di volte e ha ripristinato qualsiasi oggetto diverso dal controllo del codice sorgente versione di controllo del codice sorgente, quindi ora nessuno penserà nemmeno a fare un cambio di database senza che sia nel controllo del codice sorgente.

0

La mia risposta a questo stesso problema era di esportare tutti gli oggetti DB in un modulo di testo (più di 136.000 di essi) e quindi creare i progetti SourceSafe per conservarli. Qualsiasi oggetto nuovo o modificato nel DB ora passa alla struttura SourceSafe, mentre invariato rimane solo.

1

Come product manager per SQL Compare ho parlato con molti DBA "tradizionali" che sono a disagio con gli strumenti di terze parti principalmente perché hanno un sistema che funziona per loro e, a volte, il cambiamento può essere difficile. Ci sono molte situazioni in cui sono convinto che trarrebbero beneficio dai nostri strumenti se solo gli dessero una possibilità. Frustrante.

Una cosa che potresti prendere in considerazione è lo strumento imminente di Red Gate, SQL Source Control. Questo è progettato per costruire il controllo del codice sorgente in SSMS, in altre parole non richiede che i DBA lascino la zona di comfort del proprio ambiente di gestione. La cattiva notizia è che lo strumento non è ancora stato rilasciato. La buona notizia è che abbiamo un programma di accesso anticipato. Si prega di visitare il seguente link per saperne di più sullo strumento:

http://www.red-gate.com/Products/SQL_Source_Control/index.htm

+0

Solo per annunciare che ora è stato rilasciato e è disponibile per valutare e acquistare. http://www.red-gate.com/products/SQL_Source_Control/index.htm –

Problemi correlati