Domanda

Sto cercando di implementare il controllo del codice sorgente del database.

lo strumento di cui ho bisogno dovrebbe creare un file separato per ogni oggetto nel database, preferibilmente disposto in cartelle, come

procedure memorizzate funzioni visualizzazioni tabelle

e sarebbe bello poter scaricare anche i risultati di determinate query, al fine di tenere traccia delle modifiche ai dati in diverse tabelle di configurazione ...

Mi chiedo se esiste già uno strumento in grado di gestire questo tipo di cose ...

-

solo per chiarire alcune cose ...

Sto già usando sql delta per gestire gli script di aggiornamento ...

Vorrei avere degli script del DB da utilizzare con sovversione, quindi posso tracciare quali oggetti sono stati modificati con ogni commit, senza dover studiare gli script di aggiornamento ...

Sto sviluppando un bel script vb con SQL Distributed Management Objects (SQL-DMO), dirò come va ...

La cosa buona di avere la mia soluzione è che posso anche includere gli output di query o l'esecuzione di procedure memorizzate, per tracciare le modifiche in determinate tabelle, la configurazione del server, la crescita del database, beh, qualunque cosa riesca a scaricare un file di testo ...

Nessuna soluzione corretta

Altri suggerimenti

Uso ScriptDB proprio per questo scopo. L'unica cosa che ho dovuto cambiare era rimuovere la data di scripting nei file generati. In caso contrario, i file vengono sempre contrassegnati come modificati in Subversion.

Ecco il batch che utilizzo. svnclient è lo strumento di codeplex svncompletesync.codeplex.com , per archiviare tutti i file da una cartella in sovversione. :

svn checkout " http: // svn / myproject " D: \ Projekte \ db_svn \ myproject

ScriptDB " D: \ temp \ scriptdb " myserver mydb mylogin mypwd

del " D: \ Projekte \ db_svn \ myproject \ Schema Objects \\ *. sql " / q / s

xcopy " D: \ temp \ scriptdb \ myserver \ mydb \ Schema Objects \\ *. sql " " D: \ Projekte \ db_svn \ myproject \ Schema Objects " / e / y / i

svnclient " D: \ Projekte \ db_svn \ myproject " -m " commit durch svncompletesync "

Se ti capisco correttamente, hai bisogno di due cose: prima devi generare gli script dai metadati del database (tabelle, viste, processi memorizzati, ecc.), e una volta fatto, devi usare una sorta di metodologia coerente per il controllo delle versioni degli script.

Se hai già metadat e dati nel database, non vedo cosa ti impedirebbe di usare SQL Management Studio (o SQL Enterprise Manager) per generare script dagli oggetti del database: vedere Procedura: generare uno script (SQL Server Management Studio ) . Questo dovrebbe funzionare per SQL Server 2000, 2005, ecc. Tieni presente che puoi personalizzare le impostazioni di generazione degli script, ad es. invece di un enorme script, puoi usare singoli script per ogni oggetto. Potrebbe essere necessario scrivere alcuni script per popolare le tabelle con i dati (non sono sicuro che la procedura guidata supporti l'estrazione dei dati).

Una volta ottenuti gli script, probabilmente dovrai distribuirli manualmente tra cartelle specifiche e, al termine, dovresti essere pronto a controllarli nel controllo del codice sorgente. Da questo punto in poi è necessario capire la metodologia per le successive installazioni di database, aggiornamenti e riparazioni. Questo è un compito piuttosto complesso, coprendo che richiederebbe più tempo di una semplice risposta. Se sei interessato a possibili opzioni, controlla il mio Programma di installazione del database rivisto post che menziona un certo numero di approcci e fa riferimento a diversi articoli relativi al controllo delle versioni del database (scusate l'autopromozione, ma non voglio ripetere le stesse informazioni).

La maggior parte degli strumenti in questo campo non sono gratuiti ma esiste un progetto open source, ScriptDB , che potrebbe soddisfare le tue esigenze di generazione di script.

Questo non risolverà il problema di come applicare gli script al database nel giusto ordine - se non vuoi pagare, potresti dover improvvisare il tuo.

Puoi provare Wizardby , che non è esattamente quello che stai chiedendo , ma può comunque aiutarti a gestire la gestione delle modifiche al database. Può decodificare il tuo schema di database (beh, un sottoinsieme di esso) e quindi scrivere le cosiddette "migrazioni" in uno speciale DSL indipendente dalla piattaforma:

version 20090331140131:
    oxite_FileResource:
        FileResourceID type => PK, primary-key => true
        SiteID type => Guid, nullable => false
        FileResourceName type => LongName
        CreatorUserID references => oxite_User
        Data type => Binary
        ContentType type => AnsiString, length => 25, nullable => false
        Path type => String, length => 1000, nullable => false
        State type => Byte, nullable => false
        CreatedDate type => DateTime, nullable => false
        ModifiedDate type => DateTime, nullable => false 

    oxite_UserFileResourceRelationship:
        UserID references => oxite_User
        FileResourceID references => oxite_FileResource:
            add index unique => true

        index "" columns => [UserID, FileResourceID], unique => true, clustered => true
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top