[ dona @ 29.11.2004. 09:27 ] @
problem je sledeci:
program je za knjigovodstvo preduzeca
i baza je uradjena pod MSDE 2000

e sad
posto je jos u razvoju a vec su neki kupili djelove programa
i rade sa njima vec 2-3 mjeseca ja sam izvrsio neke ispravke i dopune
baze.

pitanje je:
Kako da najlakse nadogradim njihovu bazu bez gubitka podataka.
znaci da dodam nove tabele, procedure kao i da dodam trigere na stare
i sl.

Da li postoji alat ili se mora ici rucno sa skriptama i upitima...???
[ Simke @ 29.11.2004. 09:45 ] @
Moraces sa skriptama.

Znaci od prilike je ovakav postupak:
- Prvo promeni tabele
- Obrisi sve views, stored procedures i UDFs
- Pokreni scriptu da kreiras nove views, SPs i UDFs

Ako imas Enterprise Manager na development masini onda je jos lakse, imas opciju Generate SQL Script za databazu. Tu izaberes koje objekte da skriptuje, i da li da radi drop pre nego sto pokusa da ih kreira.
Znaci izaberi sve osim tabela (sve sto ti treba), i to je to.

Jedini problem sa ovim je sto ne skriptuje objekte "po redu" to jest u odnosu na njihove dependencies. Zato ces mozda morati da pokrenes skriptu nekoliko puta, dok sve ne bude kreirano. Uglavnom su views ti koji prouzrokuju problem.
Ovo naravno vazi ako nisi ukljucio drop opciju, jer svakim ponovnim pokretanjem scripte gubis sta si imao pre, tj opet si na istom. U slucaju da izaberes drop opciju, onda ces sam morati da aranziras scriptu tako da se objekti kreiraju po redu gde zadovoljavaju dependencies. I naravno, nemoj da drop-ujes tabele, tako ces izgubiti sve podatke.

I na kraju, ako te sve ovo mrzi da radis, evo linka do freeware programcica pisanog u C#, koji generise scriptu za bazu, ali postavi objekte tako da zadovolji sve dependencies. Kome treba, dat je i source code.

http://www.eggheadcafe.com/articles/20040913.asp
[ dona @ 29.11.2004. 09:58 ] @
A u slucaju izmjene polja u nekoj od tabela
npr. tip polja ili dodavanje novog polja

da li postoji nacin te promjene bez gubitka podataka?
[ jablan @ 29.11.2004. 10:04 ] @
Možeš i da baciš pogled na komercijalne alate firme Red Gate. Vrlo su dobri.

Uopšte uzev, nije loša praksa da se uvek kad se nešto menja na bazi pravi "diferencijalna skripta", snima u odvojeni fajl koji je označen datumom. Onda, pri apdejtu, samo uzimaš opseg skripti koji ti treba.

Poseban problem je apdejt podataka u bazi.
[ Simke @ 30.11.2004. 06:21 ] @
Moze, samo koristi alter table / column. Naravno, ako recimo hoces da promenis char polje u int, a u nekim rekordima se u tom polju nalaze slova, onda je to problem, ali pretpostvljam da u principu neces raditi nesto tako.