Cum să urmăriți modificările bazei de date în controlul sursei?

voturi
22

Noi folosim SQL Server 2000/2005 și Vault sau SVN pe cele mai multe dintre proiectele noastre. Nu am găsit o soluție decentă pentru captarea modificărilor schema bazei de date / proc în nici un sistem de control al sursei.

Soluția noastră actuală este destul de greoaie și dificil de a pune în aplicare (script-ul din obiectul pe care-l modificați și să se angajeze la baza de date).

Avem o mulțime de idei despre cum să abordeze această problemă cu unele de dezvoltare personalizat, ci mai degrabă aș instala un instrument existent (instrumente de plătit sunt bine).

Deci: cum vă urmăriți modificările dvs. de cod bază de date? Ai instrumentelor recomandate?


Editați | ×:

Multumesc pentru toate sugestiile. Din cauza constrângerilor de timp, prefer să nu se rostogolească propria mea aici. Și cele mai multe dintre sugestiile au defect care au nevoie dev să urmeze o anumită procedură.

In schimb, o soluție ideală ar monitoriza baza de date SQL pentru schimbări și să se angajeze orice modificări detectate la CSM. De exemplu, în cazul în care SQL Server a avut un add-on care ar putea înregistra orice schimbare LMD cu utilizatorul care a făcut schimbarea, atunci comite script-ul acelui obiect la CSM, aș fi încântat.

Am vorbit intern despre două sisteme: 1. În SQL 2005, utilizați permisiunile obiect pentru a vă de la a modifica un obiect până când ai făcut-o „Checkout“. Apoi, procedura de checkin ar fi script-ul in CSM. 2. Rulați un loc de muncă programat pentru a detecta orice modificări și să le angajeze (anonim) la CSM.

Ar fi frumos dacă aș putea sări peste partea de utilizator-acțiune și au sistemul se ocupe de toate acestea în mod automat.

Întrebat 09/12/2008 la 14:57
sursa de către utilizator
În alte limbi...                            


14 răspunsuri

voturi
15

Utilizați ediția Visual Studio de baze de date pentru a script-ul în baza de date. Funcționează ca un farmec și puteți utiliza orice sistem de control sursă, desigur, cel mai bine dacă are plugin-uri VS. Acest instrument are, de asemenea, o serie de alte caracteristici utile. Verificați-le aici, în acest mare post pe blog

http://www.vitalygorn.com/blog/post/2008/01/Handling-Database-easily-with-Visual-Studio-2008.aspx

sau consultați MSDN pentru documentația oficială

Publicat 09/12/2008 la 15:03
sursa de către utilizator

voturi
5

Urmărirea modificărilor bazei de date direct de la SSMS este posibil , folosind diverse instrumente 3rd party. ApexSQL Sursa de control script - uri automat orice obiect bază de date care este inclusă în versionare. Încredințarile nu poate fi realizată în mod automat de instrument. În schimb, utilizatorul trebuie să aleagă ce modificări vor fi angajate.

Atunci când obținerea modificărilor dintr-un depozit, ApexSQL Sursa de control este conștient de o integritate referențială bază de date SQL. Astfel, se va crea un script-uri de sincronizare, inclusiv toate obiectele dependente care va fi înfășurat într-o tranzacții, astfel, toate modificările vor fi aplicate în cazul în care nici o eroare este întâlnită, sau se aplică niciuna dintre modificările selectate. În orice caz, integritatea bazei de date rămâne neafectată.

Publicat 07/12/2017 la 15:12
sursa de către utilizator

voturi
5

Trebuie să spun cred că un proiect de baze de date Visual Studio este, de asemenea, o soluție rezonabilă pentru dilema sursă de control. Dacă este configurat corect, puteți rula script-urile împotriva bazei de date de la IDE. În cazul în care script-ul dvs. este vechi, pentru a primi cele mai recente, rulați-l împotriva PB. Au un script care recreează toate obiectele la fel de bine, dacă aveți nevoie, noi obiecte trebuie să fie adăugate la acest script la fel de bine cu mana, dar numai o singură dată

Îmi place fiecare masă, proc și funcționează pentru a fi în ea propriul dosar.

Publicat 09/12/2008 la 15:19
sursa de către utilizator

voturi
3

Soluție Un om sărac ar fi să adăugați un script de pre comite cârlig care haldele cele mai recente schema db într-un fișier și au acel fișier angajat să magazia dumneavoastră SVN, împreună cu codul. Apoi, puteți dif fișierele db de schemă de la orice revizuire.

Publicat 09/12/2008 la 15:01
sursa de către utilizator

voturi
1

În mediul nostru, nu vom schimba manual DB: toate modificările sunt efectuate de către script-uri la momentul de eliberare, iar script-urile sunt păstrate în sistemul de control al versiunii. O parte importantă a acestei proceduri este de a fi sigur că toate script-urile pot fi rulate din nou în același PB script-urile sunt idempotente?), Fără pierderi de date. De exemplu, dacă adăugați o coloană, asigurați-vă că nu faci nimic în cazul în care coloana este deja acolo.

Comentariul tau despre „sugestii au defect care au nevoie dev să urmeze o anumită procedură“ este într-adevăr un martor. Nu e un defect, este o caracteristică. Controlul versiunii ajută dezvoltatorii în următoarele proceduri și face procedurile mai puțin dureroase. Dacă nu doriți să urmați proceduri, nu aveți nevoie de control al versiunii.

Publicat 09/12/2008 la 17:32
sursa de către utilizator

voturi
1

Rulare propriu de la zero nu ar fi foarte greu de realizat, dar dacă utilizați un instrument de comparație SQL Redgate SQL Compară SDK - ul pentru a genera fișierele de schimbare pentru tine aceasta nu va dura foarte mult timp la jumatate de rola ceea ce doriți și apoi doar să verificați aceste fișiere în controlul sursei. M - am rostogolit ceva similar pentru mine pentru a actualiza modificările din sistemele noastre de dezvoltare la sistemele noastre live în doar câteva ore.

Publicat 09/12/2008 la 15:34
sursa de către utilizator

voturi
1

În SQL2000 genera fiecare obiect în el propriul fișier , apoi verificați - le pe toate în controlul sursă. Lăsați controlul sursă se ocupe de istoricul modificărilor.

În SQL 2005, va trebui să scrie un pic de cod pentru a genera toate obiectele în fișiere separate.

Publicat 09/12/2008 la 15:04
sursa de către utilizator

Publicat 09/12/2008 la 15:03
sursa de către utilizator

voturi
1

Ma angajez doar-SQL alter-Declarație suplimentară pentru complet SQL-CreateDB-declarație.

Publicat 09/12/2008 la 15:01
sursa de către utilizator

voturi
0

Pentru a urmări toate schimbările ca insert de actualizare și ștergere va exista o mulțime de deasupra capului pentru SVN. Este mai bine pentru a urmări numai modificările DDL , cum ar fi (modifica, picătură, de a crea) , care se schimbă schema. Puteți face cu ușurință această schemă de urmărire prin crearea unui tabel și un trgger pentru a introduce date în acest tabel. De fiecare dată când doriți u pot obține statutul de schimbare interogând din tabelul respectiv Există o mulțime de exemplu , aici și aici

Publicat 26/06/2012 la 16:02
sursa de către utilizator

voturi
0

Am dezvoltat un instrument personalizat care actualizează bazele noastre de date. Schema bazei de date este stocată într-un fișier XML de baze de date neutre, care este apoi citit și procesat de instrument. Schema este stocat în SVN, și vom adăuga comentarii adecvate pentru a arăta ceea ce a fost schimbat. Aceasta funcționează destul de bine pentru noi.

In timp ce acest tip de soluție este cu siguranță nejustificată pentru cele mai multe proiecte, cu siguranță, face viața mai ușoară uneori.

Publicat 18/09/2009 la 19:15
sursa de către utilizator

voturi
0

Dacă utilizați .Net și ca Rails abordare ia cu Migrații, atunci aș recomanda Migrator.Net .

Am găsit un tutorial frumos care se plimba prin setarea - l în Visual Studio. El oferă , de asemenea , un proiect de probă de referință.

Publicat 18/09/2009 la 19:03
sursa de către utilizator

voturi
0

Într-un proiect am aranjat cu atenție deosebită în proiectarea că toate datele importante din baza de date pot fi recreate automat din locuri externe. La pornire aplicația creează baza de date în cazul în care lipsește, și-l populează din surse externe de date, utilizând o schemă în codul sursă al aplicației (și, prin urmare, versionate cu aplicația). Numele magazinului bazei de date (un nume de fișier SQLite, deși majoritatea managerilor de baze de date permit mai multe baze de date) include o versiune schemă, și vom crește versiunea schemei de fiecare dată când vom comite o schimbare schemă. Acest lucru înseamnă că atunci când reporniți aplicația într-o nouă versiune cu o altă schemă care un nou magazin bază de date este creată și populată în mod automat. În cazul în care trebuie să revină la o desfășurare o schemă veche, atunci noua rulare a versiunii vechi va fi folosind magazinul de baze de date vechi, așa că vom ajunge să facem scăderile rapide în caz de probleme.

În esență, baza de date se comporta ca un morman de aplicare tradiționale, cu avantajele persistenței, siguranței tranzacției, dactilografiere statice (la îndemână, deoarece folosim Python) și constrângerile de unicitate. Cu toate acestea, noi nu vă faceți griji deloc despre ștergerea bazei de date și de pornire de peste, iar oamenii știu că dacă încearcă unele hack manual în baza de date, atunci acesta va fi readuse la desfășurarea următoare, la fel ca hacks unui stat proces va primi revenit la următoarea repornire.

Nu avem nevoie de nici un script de migrare de când ne-am schimba numele fișierului bazei de date și reporniți aplicația și se reconstruiește. Aceasta ajută că instanțele de aplicare sunt sharded de a utiliza o bază de date pentru fiecare client. De asemenea, reduce nevoia de backup de baze de date.

Această abordare nu va funcționa în cazul în care baza de date cu construcția, de la surse externe durează mai mult decât vă va permite aplicației să fie în continuare în jos.

Publicat 15/12/2008 la 14:14
sursa de către utilizator

voturi
0

DBAs noastre verifică periodic prod împotriva a ceea ce este în SVN și șterge orice obiecte nu se află sub controlul sursei. Este nevoie de doar o dată înainte de devlopers nu uita sa pus ceva în sursă de control din nou.

De asemenea, nu permite nimănui să se mute obiecte în produs fără un script ca devs noastre nu au drepturi prod acest lucru este ușor de aplicat.

Publicat 09/12/2008 la 15:31
sursa de către utilizator

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more