Există un sistem de control al versiunii pentru structura bazei de date se schimbă?

Am alerga de multe ori în următoarele problema.

Eu lucrez la unele modificări la un proiect care necesită noi tabele sau coloane în baza de date. Eu fac baza de date modificările și continua munca mea. De obicei, îmi amintesc să scrie modificări, astfel încât acestea pot fi replicate pe sistem live. Cu toate acestea, eu nu't întotdeauna amintiți-vă ceea ce am'am schimbat și eu nu't întotdeauna amintiți-vă să-l scrie.

Deci, eu fac un impuls pentru sistemul live și a obține o mare eroare evidentă că nu există NewColumnX`, ugh.

Indiferent de faptul că acest lucru nu poate fi cea mai bună practică pentru această situație, există un sistem de control al versiunii pentru baze de date? Eu nu't grijă despre tehnologia de baze de date. Vreau doar să știu dacă există unul. Dacă se întâmplă să lucrez cu MS SQL Server, apoi mare.

Comentarii la întrebare (2)
Soluția

În Ruby on Rails, acolo's un concept de o migrației -- rapid script-ul pentru a schimba baza de date.

Ai genera o migrare de fișier, care are reguli pentru a crește versiune db (cum ar fi adăugarea de o coloană) și reguli pentru a downgrade la versiune (cum ar fi eliminarea unei coloane). Fiecare migrația este numerotat, și o masă ține evidența dvs. de versiunea curentă db.

Pentru a migrate up, executați o comandă numit "db:migra", care se uita la versiunea și aplică nevoie de script-uri. Puteți migra în jos într-un mod similar.

Migrarea scripturi înșiși sunt păstrate într-un sistem de control al versiunii-ori de câte ori vă schimbați baza de date a verifica într-un nou scenariu, și orice dezvoltator poate aplica pentru a aduce lor locale db la cea mai recentă versiune.

Comentarii (1)

Am'm un pic mai vechi-școală, în care am folosi fișierele sursă pentru crearea de baze de date. De fapt sunt 2 fisiere - proiect-baze de date.sql și proiect actualizări.sql - prima pentru schema și persistentă de date, iar al doilea pentru modificări. Desigur, ambele sunt sub control sursă.

Când modificările de baze de date, eu prima actualizare principala schemă în proiect-baze de date.sql, apoi copiați informații relevante pentru proiect-actualizări.sql, de exemplu ALTER TABLE declarații. Pot aplica apoi actualizări pentru dezvoltarea de baze de date, testare, repeta până la făcut bine. Apoi, verificați în fișiere, verificați din nou, și se aplică de producție.

De asemenea, de obicei am un tabel in db - Config - cum ar fi:

SQL

CREATE TABLE Config
(
    cfg_tag VARCHAR(50),
    cfg_value VARCHAR(100)
);

INSERT INTO Config(cfg_tag, cfg_value) VALUES
( 'db_version', '$Revision: $'),
( 'db_revision', '$Revision: $');

Apoi, am adăuga următoarele acțiuni pentru secțiunea de actualizare:

UPDATE Config SET cfg_value='$Revision: $' WHERE cfg_tag='db_revision';

Anii db_version doar s-a schimbat atunci când baza de date este recreat, și db_revision dă-mi un indiciu cât de departe pb este de la linia de bază.

Am putea păstra actualizările în propriile fișiere separate, dar am ales să amestecați-le pe toate împreună și de a folosi cut&paste pentru a extrage secțiunile relevante. Un pic mai mult curățenie este în ordine, de exemplu, eliminarea ':' de la $Revizie 1.1 $ pentru a le congela.

Comentarii (0)

MyBatis (fostă iBatis) are o schema de migrare]2, instrument pentru utilizarea pe linia de comandă. Este scris în java, deși poate fi folosit cu orice proiect.

Pentru a realiza o bună bază de date de gestionare a schimbărilor practică, trebuie să identificăm câteva obiective-cheie. Astfel, MyBatis Schemă Sistem de Migrație (sau MyBatis Migrații pentru scurt) urmărește să:

  • Funcționează cu orice baza de date, noi sau existente
  • Pârghie de comandă a sursei de sistem (de exemplu, Subversiune)
  • Activarea concomitentă dezvoltatorii sau echipe de a lucra independent
  • Permite conflicte foarte vizibil și ușor de gestionat
  • Permite pentru înainte și înapoi migrație (evolueze, să revină respectiv)
  • Asigurați-starea curentă a bazei de date ușor accesibile și ușor de înțeles
  • Permite migrații în ciuda privilegii de acces sau de birocrație
  • Funcționează cu orice metodologie
  • Încurajează bună, în concordanță cu practicile
Comentarii (0)

Redgate are un produs numit SQL Sursă de Control. Se integrează cu TFS, SVN, SourceGear Seif, Seif Pro, Mercurial, vrând-Nevrând, și Git.

Comentarii (0)

Nu e de mirare că nimeni nu a menționat instrument open source liquibase, care este bazată pe Java și ar trebui să lucreze pentru aproape orice bază de date care sprijină jdbc. Comparativ cu șine se folosește xml în loc ruby pentru a efectua modificările schemei. Deși îmi displace xml pentru domeniul specific de limbi foarte cool avantajul de a xml este că liquibase știe cum să se rostogolească înapoi anumite operațiuni, cum ar fi



Așa că don't nevoie să se ocupe de asta din proprie

Pur sql sau date importurile sunt de asemenea suportate.

Comentarii (2)

Am foarte recomanda SQL delta. Eu doar l utilizați pentru a genera dif script-uri de când am'm făcut codificare mea caracteristică și verifica aceste script-uri în sursa mea instrument de control (Mercurial :))

Ambele au un SQL server & versiunea Oracle.

Comentarii (0)

Cele mai multe motoare de baze de date ar trebui să sprijine dumping bazei de date într-un fișier. Știu MySQL face, oricum. Acest lucru va fi doar un fișier text, astfel încât ai putea să prezinte care să Subversiune, sau orice ai folosi. L'd fi ușor pentru a rula un dif pe fișiere prea.

Comentarii (1)

Daca're folosind SQL Server ar fi greu de învins Date Dude (aka baza de Date a Ediție a Visual Studio). Odată ce te obișnuiești de ea, face o schema compara între sursă controlată versiunea de bază de date și versiunea în producție este o briza. Și cu un click puteți genera dif DDL.

Nu's o instruire video de pe MSDN's foarte utile.

Știu despre DBMS_METADATA și Broasca râioasă, dar dacă cineva ar putea veni cu un Tip de Date pentru Oracle atunci viața ar fi într-adevăr dulce.

Comentarii (0)

Aruncati o privire la oracle pachet DBMS_METADATA.

În special, următoarele metode sunt deosebit de utile:

  • DBMS_METADATA.GET_DDL
  • DBMS_METADATA.SET_TRANSFORM_PARAM
  • DBMS_METADATA.GET_GRANTED_DDL

Odată ce sunteți familiarizați cu modul în care acestea funcționează (destul de auto-explicative), puteți scrie un script simplu să-și arunce rezultatele acestor metode în fișiere text care pot fi puse sub control sursă. Mult noroc!

Nu știu dacă există ceva atât de simplu pentru MSSQL.

Comentarii (0)

Au inițială a crea tabelul declarații în versiune de controler, apoi se adauga alter table declarații, dar niciodată nu a edita fișiere, doar mai modifica fișierele în mod ideal, numit secvențial, sau chiar ca un "modifica set", astfel încât să puteți găsi toate modificările pentru o anumită misiune.

Cea mai dificilă parte pe care eu o pot vedea, este de urmărire de dependențe, de exemplu, pentru o anumită implementare tabelul B s-ar putea nevoie pentru a fi actualizate înainte de masă A.

Comentarii (0)

Pentru Oracle, eu folosesc Broasca, care poate arunca o schema pentru un număr de imagini discrete (de exemplu, un fișier per masă). Am unele script-uri care gestionează această colecție în vrând-Nevrând, dar cred că ar trebui să fie ușor de realizat în doar despre orice revizuire a sistemului de control.

Comentarii (0)

ER Studio vă permite să schimbați schema de baze de date în instrument și apoi puteți compara cu live baze de date.

Exemplu: Inversa dezvoltarea schema intr-ER Studio ... compara-l la producție și va lista toate diferențele. Se poate script modificările sau apasă-le doar în mod automat.

Odată ce aveți o schemă în ER Studio, puteți fie salvați crearea script sau salvați-l ca un drept de proprietate binare și salvați-l în versiunea de control. Dacă doriți vreodată să reveniți la o versiune anterioară a sistemului, trebuie doar să verificați-l și împingeți-l la db platforma.

Comentarii (0)

Îmi scriu db release script-uri în paralel cu codificare, și să păstreze eliberarea script-uri într-un proiect de secțiune specifică în SS. Dacă am face o modificare la codul care necesită un db schimbare, apoi am facut update la eliberarea script-ul în același timp. Înainte de a elibera, conduc la eliberarea script pe un loc curat dev db (a copiat structura înțelept din producție) și să-mi fac testarea finală pe ea.

Comentarii (0)

Am'am făcut asta de ani de zile ... de management (sau încercarea de a gestiona) schema versiuni. Cele mai bune abordări depinde de instrumentele pe care le au. Dacă puteți obține Quest instrument Software "Schema Manager" te'll fi în formă bună. Oracle are propriile sale, inferior instrument care este, de asemenea, numit "Schema Manager" (confuz mult?) asta nu't recomanda.

Fără un instrument automat (a se vedea alte comentarii aici despre Date Tip), atunci'll fi utilizarea DDL script-uri și fișiere direct. Alege o abordare, document, și urmați-l în mod riguros. Îmi place având capacitatea de a re-crea baza de date în orice moment, așa că am prefera să avem o deplină DDL export din întreaga bază de date (dacă am'm DBA), sau de producător schema (dacă am'm in produse-modul de dezvoltare).

Comentarii (0)

PLSQL Developer, un instrument de Tot in Jurul Automatizari, are un plugin pentru centrale de tranzacții care functioneaza OK ( dar nu mare) cu Visual Source Safe.

De pe web:

Versiunea de Control Plug-In oferă o integrare strânsă între PL/SQL Developer IDE >>și orice Sistem de Control Versiune care acceptă Microsoft SCC Interface Specification. >>Aceasta include cele mai populare Sistemele de Control al Versiunii, cum ar fi Microsoft Visual SourceSafe, >>Merant PVC și MKS Sursa de Integritate.

http://www.allroundautomations.com/plsvcs.html

Comentarii (0)

Nu's o PHP5 "migrarea bazei de date cadru" numit Ruckusing. Nu am't folosit-o, dar exemple arată idee, daca ai folosi limba pentru a crea baza de date ca și atunci când este necesar, trebuie doar să urmăriți fișierele sursă.

Comentarii (0)

Puteți utiliza Microsoft SQL Server data Tools în visual studio pentru a genera script-uri pentru obiectele bazei de date, ca parte a unui SQL Server Proiect. Apoi, puteți adăuga script-uri pentru a sursei de control folosind sursa de control de integrare, care este construit în visual studio. De asemenea, SQL Server Proiecte permite să verificați obiectele bazei de date folosind un compilator și de a genera script-uri de implementare a actualiza o bază de date existentă sau creați una nouă.

Comentarii (0)

Schema Compara pentru Oracle este un instrument special conceput pentru a migra modificări la noastre de date Oracle la altul. Vă rugăm să vizitați URL-ul de mai jos pentru link-ul de descărcare, în cazul în care va fi capabil de a utiliza software-ul pentru un proces pe deplin funcțional.

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

Comentarii (0)

Am'am folosit MS Echipă de Date a Sistemului Ediție cu un succes destul de bine. Se integrează cu TFS versiune de control și Visual Studio mai mult sau mai puțin perfect și ne permite să gestionează stocate procs, opinii, etc., cu ușurință. Rezolvarea conflictelor poate fi o durere, dar versiunea istoria este complet odată ce-l's-a făcut. Ulterior, migrații de asigurare a calității și de producție sunt extrem de simple.

L's corect să spunem că-l's version 1.0 produs, deși, și nu este fără câteva probleme.

Comentarii (0)

Am'd recomanda una din cele două abordări. În primul rând, de a investi în PowerDesigner de la Sybase. Enterprise Edition. Acesta vă permite să design Fizice datamodels, și un întreg lot mai mult. Dar acesta este dotat cu o magazie care vă permite să verificați în modele. Fiecare nou check-in poate fi o versiune noua, se poate compara orice versiune la orice altă versiune și chiar la ceea ce este în baza de date la acel moment. Acesta va prezenta o listă de fiecare diferență și să întrebați care ar fi migrat... și apoi se construiește scenariul să-l facă. Nu e ieftin dar e un chilipir la de două ori prețul și rentabilitatea INVESTIȚIEI este de aproximativ 6 luni.

Altă idee este de a transforma pe DDL audit (funcționează în Oracle). Acest lucru va crea un tabel cu fiecare modificare pe care o faci. Dacă interogarea modificările la timestamp ultima mutat baza de date modificările prod acum, veți avea o listă ordonată de tot ce ai făcut. Câteva clauze where pentru a elimina zero-sum modificări, cum ar fi create table foo; urmat de drop table foo; și vă puteți construi cu UȘURINȚĂ un mod de script. De ce păstrați modificările într-un wiki, asta e munca dubla. Lasa date urmăriți-le pentru tine.

Comentarii (0)