Teorijski, ne treba da brines, kod ne treba da se menja. Access 2003 ima nesto sto se zove 'Upsizing wizard' i taj alat ce sve tabele sa back enda da prebci na MS SQL server , u abzu koju ti specificiras (treba toi ODBC konekcija za ovo). Wizard lepo prenese tabele i relacije, ali ne ume da prenese sav validation rules, ako ih imas na kolonama ili na tabelama, pa to moras da proveris. Elem, tabele se prebace od istim imenom, ako se zvala tabela tblKupci u Accesu, zvace se tblKupci i u MS SQL.
Sledeci korak je da povezes tabele na aplikacijuu. I za ovo treba ODBC konekcija, pa izaberse tabele iz MS SQL i povezes ih, na isti ancin kao sto povezujes back end sa front endom. Tabele ce se pojaviti u aplikaciji kao linkovane, ali ne pod pravim imenom, nego sa dodatkom. Na primer, tabele tblKupci ce se pojaviti kao dbo_tblKupci. Ono dbo_ na pocetku ce uciniti da ti ne radi ni jedna forma ni report i nista od koda. Resenje, kad jednom povezes tabele, primenuj ih tako da im ime bude kako treba: tabelu dbo_tblKupci preimenujes da se zove tblKupci, kako se i zvala ranije, dok je dolazila iz Accesa. I to je to. Tu je kraj teorije. Ako dakle povezes sve tabele, pa ih preimenujes, Acces forme i reporti kao i VBA kod ce mislsiti da su to one iste tabele iz starog back enda. Tu se teorija dakle zavrsava.
U praksi, ima problema. Prvo, tipovi podataka za MS SQL i za Access nisu bas isti. Na primer, MS SQL nema tip Yes/No, i to se konvertuje u int ili byte. Kad linkujes tabele, Access uglavnom prebrodi ovu razliku i slicne razlike. Sta se dalje ne slaze, otkrices i sam kad pocne program da puca. Moraces da razmislis o nacinu logovanja na SQL server, o permissions za korisnike. Da li ce svako imati svoj username, ili ce aplikacija koristiti jedan username za sve korisnike? Na svakoj masini koja ce da koristi program treba da se napravi ODBC konekcija, saglacno uslovima pristupa na SQL server. I to ces nekako napraviti, pre ili kasnije i to ce nekako da proradi.
Pravi problemi nastace kad otkrijes da VBA kod koji lepo radi u Accesu nije bas optimalan sa stanovisat SQL servera. Stvari kao "SELECT * FROM MyTable" se u principu ne rade na SQL serveru, i jos mmnogo toga drugog. Posoje aplikacija napisana u Accesu, verovatno imas desetine kverija koji jedan drugoga pozivaju. akd radis sa MS SQL to je veoma neefikasan nacin rada, desava se da ti aplikacija pod SQL bude mnogo sporija nego kad je bilo sve pod Accesom. Ako ti je MS SQL back end, onda je pravilo da se kveriji izvrsavaju na SQL serveru umesto u Accesu. to znaci da ih treba napisati na servderu, bilo kao views ili stored procedures. Nije bas mnogo pametno samo prekopirati Access kverije na SQL server. Prvo, sintaksa nije bas ista. Drugo, jos vaznije, MS SQL ne zahteva destine kverija koji jedan drugog pozivaju. Ono sto uradis sa 3-4 kverija u Accesu, u MS SQL se obicno psotigne jednim kverijem.
Hocu da kazem, ako prebacis back end na MS SQL, to visde nija Access sistem. Pravi posao se odraduje na SQL strani a aplikacija postaje samo fasada, sto praznija to bolje. Mnoge kontrole ispravnosti podataka koje si dosada radio u aplikaciji, prebacuju se na SQL server, jer SQL server moze da uradi mnogo toga sto Access ne moze ni da zamisli. Spremi se da postanes SQL programer, a da Access ostane samo alat za brzi razvj aplikacija i report generator.
Ovo znaci da prelaz na MS SQL nije naivna stvar i tome se ne pristupa olako. Ako ima bilo oja rec ili recenica u ovom tekstu koju ne razumes, savetujem da obustavis ceo posao, jer jos nisi spreman za tako nesto. Ne radi se dakle o pukom prebacivanju tabela iz Access fajla u MS SQL fajl, radi se o kvalitativnom skoku, kao sa bicikla kad predjes na sectocilindricni auto. Oba zavrsavaju isti posao, prevezu te od A do B. Mnogo puta bicikl je efikasniji nego auto, ali je odrzavanje, troskovi, nacin voznje ipak malkice drugaciji i slozeniji kada imas auto.
