MIKRO KNJIGA

SQL Server 2000

DEO I

Uvod u SQL Server

 

Poglavlje

1

Uvod u SQL Server 2000

U ovom poglavlju
  • Uvod za administratore baza podataka
  • Uvod za razvojne inženjere
  • Uvod za korisnike
  • Sažetak

Dobro došli u SQL Server 2000! U ovoj knjizi ćemo vam pomoći da savladate osnove SQL Servera i da napredujete ka složenijim temama. Ovde nećete naučiti baš sve o Microsoftovom najboljem sistemu za rad sa bazom podataka - to je ogroman skup programa koji zahteva višegodišnje izučavanje. Me?utim, mi ćemo vam pokazati kako da odmah "u?ete u štos" i brzo napredujete i kako da obavljate svakodnevne poslove - da brinete o tome da podaci budu bezbedni i zaštićeni i stalno na raspolaganju korisnicima.

Pre nego što zaronimo u dubine SQL Servera, želimo da vas upoznamo s njim. Vi možda tek počinjete kao administrator koji treba da se stara o bazama podataka koje koriste drugi; možda ste razvojni inženjer koji se sprema da piše programe za izdvajanje korisnih podataka sa servera koji održava neko drugi a možda ste korisnik koji samo želi da vidi odre?ene podatke, a nema vremena da čeka da računski centar napravi aplikaciju.

Ko god da ste, u ovoj knjizi ima nešto za vas. U ovom poglavlju nudimo vam tri kratka uvoda: jedan za administratore, jedan za projektante i jedan za korisnike. U ovim uvodima ne možemo obuhvatiti sve funkcije SQL Servera 2000, ali ono što ćemo vam pokazati biće dovoljno da se i vi oduševite ovim sistemom za rad sa bazama podataka.

Uvod za administratore baza podataka

Glavna alatka za administratore biće SQL Server Enterprise Manager. Zato ćemo vam na počeku kursa pokazati kako da pomoću ovog interfejsa upravljate podacima i korisnicima kao i kako da vodite evidenciju o tome šta se doga?a na serveru.

Pokretanje Enterprise Managera

Da biste pokrenuli SQL Server Enterprise Manager, iz Windowsovog menija Start izaberite Programs Microsoft SQL Server Enterprise Manager. Otvoriće se instanca alatke Microsoft Management Console (MMC) u kojoj je kao koren učitan SQL Server Enterprise Manager. Odavde možete da se krećete po hijerarhijskom stablu i da sa servera prelazite na baze podataka i druge objekte, kao i da ispitujete datoteke odre?enog objekta sa liste. Na slici 1.1 prikazano je kako može da izgleda Enterprise Manager nekoliko nivoa ispod korena. U primeru prikazanom na slici, pregledaćemo tabele u bazi podataka pubs na serveru HENHOUSE u podrazumevanoj serverskoj grupi.

napomena

Baza podataka pubs isporučuje se zajedno sa SQL Serverom 2000. U mnogim slučajevima u knjizi koristićemo ovu bazu kao dobar generički primer baze podatka. Koristićemo i bazu Northwind ili ćemo praviti primere koje možete zatim prilago?avati sopstvenim potrebama.

 
 
savet

Microsoft Management Console je jedinstven interfejs koji će se u budućnosti koristiti za upravljanje svim programima iz paketa Microsoft BackOffice. Windows 2000 intenzivno koristi MMC za administrativne poslove svih vrsta. O MMC konzoli i Enterprise Manageru saznaćete više u poglavlju 9.

 

Č;ak i ako ne znate ništa o SQL Server Enterprise Manageru, zadiviće vas dugačka lista objekata kojima možete upravljati pomoću ovog interfejsa:

Databases (baze podataka)

Database Diagrams (dijagrami baza podataka)

Tables (tabele)

Views (prikazi)

Stored procedures (uskladištene procedure)

Users (korisnici)

Roles (uloge)

Rules (pravila)

Defaults (podrazumevane vrednosti)

User-defined datatypes (korisnički tipovi podataka)

User-defined functions (korisničke funkcije)

Full-text catalogs (katalozi za pretraživanje tekstualnih podataka)

Data Transformation Service Packages (DTS paketi)

Meta Data Services Packages (MDS paketi)

Data Transformation Services Meta Data (DTS metapodaci)

Alerts (alarmi)

Operators (operateri)

Jobs (poslovi)

Backups (rezervne kopije)

Process Information (podaci o procesu)

Database maintenance plans (planovi održavanja baza podataka)

SQL Server logs (dnevnici SQL Servera)

Replication (replikovanje)

Logins (prijavni nalozi)

Server roles (serverske uloge)

Performance Analyzer

Web publishing (objavljivanje na Webu)

Linked servers (povezani serveri)

Remote servers (udaljeni serveri)

Ovo je samo jedan delić! O većini ovih objekata saznaćete više u narednim poglavljima.

MMC (što znači i Enterprise Manager) može da prikazuje i potpuno funkcionalne HTML strane. U MMC žargonu one se ponekad nazivaju palete s poslovima. Na primer, na slici 1.2 prikazana je strana General koju Enterprise Manager automatski generiše za bazu Northwind, u ovom slučaju na serveru HENHOUSE. Ova strana prikazuje podatke o bazi i omogućava da administrator aktivira jednostavne poslove (prikazani poslovi - kao što je Backup Database - jesu hiperveze koje aktiviraju posao kad se pritisnu).

napomena

Northwind je baza podataka koja se isporučuje sa SQL Serverom 2000 (kao i baza pubs). Da biste probali primere iz knjige, možete koristiti bilo koju od ove dve baze, a možete napraviti i novu.

 
Formiranje prijavnog naloga

Jedan od vaših glavnih zadataka kao administratora jeste da vodite računa o bezbednosti SQL Servera. O bezbednosti ćemo podrobnije govoriti u poglavlju 16, a za sada pogledajmo samo jedan deo slike: formiranje prijavnog naloga. Prijavni nalog na SQL Serveru jedan je od elemenata koji su neophodni da bi podaci sa SQL Servera postali dostupni Windows NT korisniku u mreži.

savet

Ovo je dobar trenutak da se pomene da SQL Server inicijalno nije zaštićen jer svaka instalacija sadrži prijavni nalog koji se zove "sa" (system administrator), a čiji vlasnik na serveru može da radi šta god želi; od vlasnika ovog prijavnog naloga standardno se ne zahteva lozinka. Ako želite da zaštitite svoje podatke, treba što pre da zadate lozinku za taj prijavni nalog. To nije sve što treba da uradite da bi vaši podaci bili bezbedni. Ako je u pitanju instalacija od ključne važnosti, razmislite o nekoj profesionalnoj alatki kao što je ISS Database Scanner ( http://www.iss.net ) pomoću koga možete nadzirati server.

 

Prijavni nalog se može formirati na više načina, a najlakši je pomoću čarobnjaka Create Login Wizard. Iz menija Enterprise Manager izaberite Tools Wizards pa će se otvoriti okvir za dijalog Select Wizard (slika 1.3). Kao što se vidi, Enterprise Manager ima nekoliko čarobnjaka za obavljanje najčešćih poslova. Ova mogućnost je jedna od najkorisnijih koju Enterprise Manager nudi neiskusnim administratorima.

Sa liste izaberite Create Login Wizard pa pritisnite OK ili dvaput pritisnite odgovarajuću stavku liste pa će se Create Login Wizard pokrenuti. Posle uvodnog prozora, čarobnjak će tražiti da izaberete način identifikacije, kao što je pokazano na slici 1.4.

SQL Server ima na raspolaganju dve metode pomoću kojih može da proveri da li je korisnik zaista taj za koga se izdaje:

  • Windows NT Authentication: korisnik se upore?uje sa podacima u bazi Windows NT korisnika.
  • SQL Server Authentication: od korisnika se zahteva lozinka koju proverava sam SQL Server.

U većini slučajeva izabraćete način Windows NT Authentication kako vaši korisnici ne bi morali da imaju posebnu lozinku na SQL Serveru i da vi ne biste morali da održavate i uskla?ujete dva skupa lozinki. Me?utim, i nalozi na SQL Serveru mogu biti korisni za neke operacije kao što su pristupanje bazi podataka preko Interneta. Osim toga, morate imati na umu da Windows NT Authentication možete koristiti samo ako vaš primerak SQL Servera radi pod Windowsom NT ili Windowsom 2000; ako se SQL Server izvršava pod Windowsom 98, Windows NT Authentication vam neće biti dostupan.

U narednom prozoru čarobnjaka navedite korisnika Windowsa NT za koga želite da formirate prijavni nalog (kada korisitite način identifikacije Windows NT Authentication). Ovaj prozor je prikazan na slici 1.5. Kao što vidite, domen i korisničko ime ne možete da izaberete sa liste korisnika Windowsa NT nego morate ručno da ih zadate.

U ovom prozoru možete samo da dozvolite ili zabranite korisniku da pristupa serveru. Generalno, trebalo bi da dozvolite pristup samo onim korisnicima kojima je neophodno da pristupaju podacima na serveru. Nema razloga da se dopusti besposlenima da vršljaju po bazi podataka.

Sledeći prozor čarobnjaka omogućava da izaberete bezbednosne uloge za korisnika. Bezbednosna uloga je skup koji sadrži dozvole potrebne za obavljanje odre?enog posla. Na primer, SQL Server se isporučuje sa dve bezbednosne uloge: System Administrators i Database Creators. Ako zadate bezbednosne uloge, čarobnjak će tražiti da izaberete baze kojima će prijavni nalog moći da pristupa. Ako ne izaberete nijednu bazu, korisnik će moći da se prijavi ali neće moći ništa da radi.

Poslednji prozor čarobnjaka (slika 1.6) omogućava da potvrdite ono što ste izabrali u prethodnim prozorima. Ako je sve u redu, pritisnite Finish i prijavni nalog će biti formiran. To bi bilo sve!

Izmene struktura tabela

Drugi posao koji administratora baze podataka verovatno čeka, jeste menjanje struktura tabela. Pretpostavimo da ste otkrili da se u odre?eno polje u nekoj od vaših tabela ne može upisati potreban podatak i da morate da povećate njegovu veličinu sa 40 na, na primer, 60 znakova. U prethodnim verzijama SQL Servera to je bio prilično mukotrpan posao. U ovoj verziji, u Enterprise Manager integrisana je grupa uslužnih programa poznata pod imenom Visual Database Tools pomoću koje se ti poslovi obavljaju veoma jednostavno.

Da biste načinili potrebne izmene, u prozoru Enterprise Managera najpre prona?ite tabelu (kao primer koristićemo tabelu Stores u bazi unutar radnog prostora Enterprise Managera podataka pubs). Zatim je pritisnite desnim tasterom miša pa izaberite Design Table. Unutar radnog prostora Enterprise Managera otvoriće se poseban prozor za rad sa tabelama. Da biste promenili veličinu polja, izaberite staru dužinu i upišite novu, kao što je prikazano na slici 1.7.

Dizajner tabela omogućava da menjate razne stvari u postojećim tabelama. Na primer, izmene mogu biti sledećeg tipa:

  • dodavanje i brisanje polja
  • preimenovanje polja
  • promena tipa ili veličine podatka
  • dozvola da se u polje može uneti vrednost NULL
  • pridruživanje podrazumevane vrednosti polju
  • uvo?enje primarnog ključa.

U svim navedenim slučajevima treba uložiti prilično truda da bi se izmene načinile. To obično podrazumeva formiranje privremene tabele, kopiranje podataka u tu tabelu, brisanje prvobitne tabele i promenu imena privremene tabele. Me?utim, o svemu tome vodi računa dizajner tabela. Vi treba samo da u interfejsu za rad pišete željene izmene i da zatim pritisnete dugme Save koje se nalazi na paleti sa alatkama.

Nadgledanje tekućih aktivnosti

U odre?enom trenutku možda ćete poželeti da znate šta se dešava u bazi podataka. Enterprise Manager vam omogućava da "bacite pogled" na bazu podataka. Izaberite čvor Process Info koji se nalazi u grani Current Activity ispod čvora Management. Na slici 1.8 prikazane su tipične aktivnosti na slabo opterećenom serveru.

Može se desiti da ugledate proces koji ne prepoznajete. U tom slučaju, pritisnite ga dvaput pa ćete dobiti nekoliko poslednjih T-SQL iskaza izvršenih po nalogu tog procesa. Ako i dalje ne znate o kakvom procesu se radi, možete iz Enterprise Managera poslati poruku direktno korisniku ili računaru od koga proces potiče.

Drugi čvorovi u prozoru Enterprise Managera omogućavaju da pregledate koji su podaci trenutno zaključani i da eventualno otkrijete uzajamne blokade koje mogu loše da utiču na performanse servera.

Praćenje aktivnosti

U nekim slučajevima možda će vam biti potrebni podrobniji podaci o odre?enoj aktivnosti. SQL Server se isporučuje s fleksibilnim uslužnim programom za nadgledanje aktivnosti na serveru - SQL Server Profiler. Ovaj program ćete pokrenuti tako što ćete u meniju Start izabrati Programs Microsoft SQL Server Profiler.

SQL Server Profiler radi tako što presreće i beleži saobraćaj usmeren prema serveru i od servera. Rezultate možete prikazati na ekranu ili ih možete snimiti u datoteku. Za svaki skup aktivnosti koje želite da pratite treba da definišete trag (engl. trace ). Na slici 1.9 prikazan je primer traga.

Kao što primećujete, trag vam omogućava ne samo da vidite koji se SQL iskazi izvršavaju na serveru nego i koje aplikacije šalju te iskaze i u kojoj meri to opterećuje server.

Razume se, praćenje svih aktivnosti na opterećenom serveru brzo bi dovelo do njegovog zagušenja. Zato SQL Server Profiler omogućava da definišete tragove sa tačno odre?enom namenom. Na primer, možete pratiti samo:

  • sekvencijalna pretraživanja tabela
  • DTC transakcije
  • iskaze koji troše više od jedne sekunde procesorskog vremena
  • iskaze odre?enog korisnika.

O SQL Server Profileru saznaćete više u poglavlju 24.

Optimizovanje indeksa

I optimizovanje indeksa u bazi podataka je nekada bilo mnogo teže izvesti nego danas. Kada korisnik pošalje upit da bi pronašao odre?ene podatke u bazi, SQL Server formira plan izvršenja upita. Deo tog plana su indeksi koji će se koristiti za nalaženje podataka. Ako u bazi podataka definišete suviše mali broj indeksa, pronalaženje podataka će trajati duže nego što bi trebalo. Ako definišete prevelik broj indeksa, umetanje ili ažuriranje podataka će trajati duže nego što bi trebalo.

Donedavno je optimizovanje indeksa bio veoma specijalizovan posao za čije obavljanje je bilo potrebno znatno iskustvo. To više nije tako jer je SQL Server 2000 sve potrebno znanje za obavljanje tog zadatka ugradio u Index Tuning Wizard. Ovaj čarobnjak se pokreće iz okvira za dijalog Select Wizard i vodi vas kroz postupak optimizovanja indeksa na odre?enom serveru ili bazi podataka.

Na slici 1.10 prikazan je Index Tuning Wizard na delu. Glavna prednost ovog čarobnjaka jeste njegovo oslanjanje na datoteku radnog opterećenja. Datoteka Radnog operećenja (engl. work load) jeste datoteka ili tabela koju je SQL Server Profiler snimio za vreme uobičajene upotrebe baze podataka. To je značajno zato što na izbor indeksa utiče model upita koji su prethodno izvršavani u datoj bazi podataka.

Koristeći ovog čarobnjaka, steći ćete predstavu o tome kako razne alatke koje nudi SQL Server rade kao celina. Pomoću SQL Server Profilera možete pratiti aktivnosti u bazi podataka, a zatim te zabeležene aktivnosti možete koristiti u Index Tuning Wizardu za optimizovanje baze. Rezultat optimizacije trebalo bi da se primeti u novom tragu SQL Server Profilera.

Uvod za projektante

Projektante aplikacija zasnovanih na SQL Serveru manje će zanimati projektovanje i održavanje baze podataka a više ono što se s njom može raditi. SQL Server 2000 se isporučuje s raznim alatkama za razvoj u koje spadaju ActiveX Data Objects (ADO), SQL-DMO, SQL-NS, Analysis Services i BCP (Bulk Copy Program). O većini tih alatki saznaćete više u delu 5. U ovom uvodu omogućićemo vam da steknete predstavu o tome kako se pomoću ADO objekata podaci iz SQL Serverove baze jednostavno koriste u programu napisanom u Visual Basicu.

Nekoliko reči o ADO tehnologiji

Posle nekoliko neuspelih početaka, Microsoft je u svim svojim proizvodima počeo da koristi strategiju nazvanu Microsoftov univerzalan pristup podacima (Microsoft Universal Data Access). Tu spadaju dve glavne komponente:

  • OLE DB je skup COM interfejsa za pristup podacima. OLE DB dobavljači mogu da se povežu sa podacima iz velikog broja različitih izvora.
  • ADO je biblioteka objekata koja OLE DB podatke stavlja na raspolaganje potrošačima.

SQL Server 2000 se isporučuje sa verzijom ADO 2.6. To je nova verzija koja je počela da se isporučuje kao deo Windowsa 2000. Srećom, sve verzije ADO objekata kompatibilne su sa prethodnim verzijama (tj. ono što je radilo u prethodnoj verziji radi i u novoj). Zato bi trebalo da veliki deo postojećeg ADO koda ispravno radi kada se instalira SQL Server 2000.

Suština ADO objekata jeste da se za razvojnog inženjera pristup podacima uvek odvija na isti način, bez obzira na to iz kog izvora oni potiču. Bez obzira na to da li radite sa SQL Serverom, Jet bazama ili čak podacima koji se čuvaju u Exchangeovom poštanskom sandučetu, vaš kôd je potpuno isti. U ovom odeljku bacićemo pogled na taj kôd.

savet

Najnovije informacije o ADO tehnologiji i drugim komponentama univerzalnog Microsoftovog pristupa podacima, isplati se potražiti na Web lokaciji http://www.microsoft.com/data .

 
Uspostavljanje ADO veze

Da biste mogli da koristite ADO objekte, treba prethodno da se povežete sa izvorom podataka. To ćete uraditi tako što ćete formirati objekat Connection a zatim pomoću njegove metode Open navesti izvor podatka sa kojim biste želeli da radite.

savet

Da biste iz Visual Basica koristili bilo koji ADO objekat, prvo morate postaviti referencu na Microsoftovu biblioteku ActiveX Data Objects 2.6 u okviru za dijalog Projects References.

 

Evo primera uspostavljanja veze:

Private Sub cmdConnect_Click()

' Uspostavljanje veze sa SQL Serverovom bazom podataka

Dim cnn As New ADODB.Connection

 

cnn.Open "Provider=SQLOLEDB.1; " & _

"Data Source = (local);" & _

"User ID =" sa;" & _

"Initial Catalog = Northwind"

 

MsgBox cnn.ConnectionString

End Sub

Obratite pažnju na to da je u deklaraciji objekta Connection korišćeno ime biblioteke (ADODB) i ime objekta. Takav običaj spada u dobre programerske navike jer otklanja mogućnost da pristupite pogrešnom objektu kada koristite dve biblioteke pri čemu obe sadrže objekat čije je ime Connection.

Argument metode Open jeste OLE DB vezivni niz. Vezivni niz je lista argumenata i podataka koji OLE DB dobavljaču ukazuju gde da traži podatke. U ovom slučaju on sadrži četiri argumenta:

Provider: OLE DB dobavljač koji treba koristiti, od koga zavisi i tip podataka koji će biti očitani. SQLOLEDB.1 je ime Microsoftovog OLE DB dobavljača za SQL Server i to je najbrži način da se pomoću ADO objekata pristupa podacima na SQL Serveru.

Data Source: Označava SQL Server na koji se treba priključiti. U ovom primeru koristili smo poseban znakovni niz "(local)" da bismo označili da i server i Visual Basic aplikacija rade na istom računaru. Inače, ovde treba da navedete ime servera.

User ID: Korisničko ime koje se upotrebljava za prijavljivanje na SQL Server. U ovom primeru koristili smo podrazumevanog korisnika "sa" sa podrazumevanom praznom lozinkom. Ako treba da prosledite i lozinku, upotrebite argument Password - to u našem slučaju nije bilo potrebno.

Initial Catalog: Ime baze podataka s kojom se uspostavlja veza.

Ako pokušate da izvršite ovaj program, otkrićete da je vezivni niz koji dobijate kao rezultat nešto duži od onog koji ste zadali u metodi Open. Taj niz izgleda otprilike ovako:

Provider=SQLOLEDB.1;User ID=sa;

Initial Catalog=Northwind;Data Source=(local);

Use Procedure for Prepare=1; Auto Translate=True;

Packet Size=4096;Workstation ID=MOOCOW.

OLEDB dobavljač za SQL Server umetnuo je podrazumevane vrednosti za ostale argumente koje je prepoznao. Na primer, argument Connect Timeout označava koliko sekundi treba čekati odgovor od servera.

napomena

Više podataka o metodi Open, kao i ostalo o ADO objektima, naći ćete u poglavlju 17.

 
Učitavanje podataka

Da biste učitali podatke pomoću ADO objekata, koristite objekat Recordset, odnosno skup zapisa. Skup zapisa predstavlja, sasvim logično, skup zapisa (redova) iz tabela ili grupe me?usobno spojenih tabela. Svakom skupu zapisa pridružena je veza sa izvorom zapisa i izvor zapisa iz kog potiču podaci u skupu zapisa. Izvor zapisa može biti:

  • ime tabele
  • ime uskladištene procedure koja daje zapise
  • SQL iskaz
  • ime datoteke koja sadrži zapise.

To su samo neke od mogućnosti; verzija ADO 2.6 čak dozvoljava učitavanje skupa zapisa sa URL adrese.

Evo primera koda koji učitava skup zapisa i prikazuje ih u prozoru Immediate u Visual Basicu:

Private Sub cmdRecordset_Click()

' Prikazuje skup zapisa u prozoru Immediate

Dim cnn As New ADODB.Connection

Dim rst As New ADODB.Recordset

Dim fld As ADODB.Field

' Otvaranje veze

cnn.Open "Provider=SQLOLEDB.1; " & _

"Data Source = (local); "& _

"User ID = sa;" & _

"Initial Catalog = Northwind"

 

' Otvaranje skupa zapisa na osnovu tabele

rst.CursorLocation=adUseClient

rst.Open "Shippers", cnn, adOpenStatic, _

adLockOptimistic

 

' Prikazivanje naziva polja

For Each fld In rst.Fields

Debug.Print fld.Name & " ";

Next fld

Debug.Print

 

' Štampanje sadržaja svih polja

Do Until rst.EOF

For Each fld In rst.Fields

Debug.Print fld.Value & " ";

Next fld

Debug.Print

rst.MoveNext

Loop

' Raščišćavanje

rst.Close

cnn.Close

Set rst = Nothing

Set cnn = Nothing

Set fld = Nothing

End Sub

U ovom primeru koda obratite pažnju na sledeće elemente koji ilustruju fleksibilnost ADO objekta Recordset:

  • Kada svojstvu CursorLocation objekta Recordset date vrednost adUseClient, to nalaže ADO objektu da zapise kešira lokalno, nakon učitavanja. Time je omogućena efikasnija obrada i pozivanje nekih naprednih ADO metoda.
  • Možete da navedete i da želite statički skup zapisa (skup zapisa na koji se ne odražavaju promene koje drugi korisnici unose) kao i tip zaključavanja (u ovom primeru "optimistic locking") koji će se primenjivati posle otvaranja skupa zapisa.
  • Skup zapisa je kolekcija polja sa imenima i vrednostima.
  • Skup zapisa ima nekoliko svojstava me?u kojima je i svojstvo EOF koje dobija logičku vrednost "True" na kraju skupa zapisa. Skup zapisa ima i nekoliko metoda me?u koje spada i MoveNext koja služi za pomeranje kursora na sledeći zapis.
  • Da biste posao odradili kako pravila nalažu, možete da zatvorite svoje ADO objekte i dodelite im vrednost Nothing čime ćete odmah osloboditi prostor u memoriji koji su oni zauzimali.

Na slici 1.11 prikazani su rezultati izvršavanja ovog programa.

Ažuriranje podataka

Zahvaljujući ADO tehnologiji, ažuriranje podataka je sasvim jednostavno. Možete dodavati nove zapise, brisati postojeće zapise ili menjati podatke zapisane u njima tako što ćete pozivati odgovarajuće metode objekta Recordset. Na primer, sledeći program menja sadržaj skupa zapisa iz prethodnog primera:

Private Sub cmdModify_Click()

' Demonstracija izmene skupa zapisa

Dim cnn As New ADODB.Connection

Dim rst As New ADODB.Recordset

 

'Otvaranje veze

cnn.Open "Provider=SQLOLEDB.1; "& _

"Data Source = (local);" & _

"User ID = sa;" & _

"Initial Catalog = Northwind"

 

' Otvaranje skupa zapisa na osnovu tabele

rst.CursorLocation = adUseClient

rst.Open "Shippers", cnn, adOpenStatic, _

adLockOptimistic

 

' Dodavanje novog zapisa

rst.AddNew

rst.Fields("CompanyName") = "NewShipper"

rst.Fields("PhoneN") = "(509)-555-1212"

rst.Update

 

' Izmena sadržaja upravo dodatog zapisa

rst.MoveLast

rst("Phone") = "509-666-1212"

rst.Update

 

' Brisanje zapisa s kojim smo se igrali

rst.MoveLast

rst.Delete

 

' Raščišćavanje

rst.Close

cnn.Close

Set rst = Nothing

Set cnn = Nothing

 

End Sub

Ovde se vide metode objekta Recordset na delu:

  • metoda AddNew priprema nov red pre dodavanja u skup zapisa
  • metoda Update upisuje u bazu podataka novi red ili izmene podataka u postojećem redu
  • metoda Delete briše tekući red.
  • napomena

    U ovom slučaju, sigurni smo da će novi red biti poslednji red u skupu zapisa jer se skup zapisa zasniva na tabeli koja sadrži polje tipa Identity. Server automatski ovom polju dodeljuje ID brojeve rastućim redom. O polju Identity saznaćete više u poglavlju 11.

     
Prikazivanje podataka na Web strani

Internet je danas svuda - a tamo gde nema Interneta postoje korporacijski intranetovi. Zato projektanti često dobijaju zadatke da obezbede da podaci budu dostupni na Web stranicama.

Naravno, to se može uraditi na više načina. Možete na klijentskoj strani pokrenuti VBScript kôd koji će se povezati sa udaljenim serverom. Možete direktno na serveru napraviti ASP strane koje koriste ADO objekte za formiranje sirovog HTML koda koji se zatim šalje klijentima. Možete i da pišete upite koji direktno daju XML kôd koji neki čitači mogu da prikažu. Za sada pogledajmo najjednostavniji način: korišćenje alatki koje SQL Server nudi za objavljivanje podataka direktno na Web strani.

U Enterprise Manageru možete izabrati Tools Wizards i pokrenuti Web Assistant Wizard. (Kako nešto može biti i pomoćnik i čarobnjak? Ne znamo - nismo mu mi dali takvo ime.) Ovaj čarobnjak formira skup SQL Serverovih poslova koji formiraju i ažuriraju Web stranu zasnovanu na podacima koje vi izaberete.

Korišćenje čarobnjaka je jednostavno:

Izaberite bazu koja sadrži podatke koje želite da objavite.
  1. Dodelite Web strani ime pa izaberite tabelu, SQL iskaz ili uskladištenu proceduru koja će biti izvor podataka.
  2. Izaberite kolone koje želite da objavite.
  3. Izaberite redove koje ćete objaviti.
  4. Izaberite učestanost ažuriranja. Kao što se vidi na slici 1.12, postoji veliki broj mogućnosti.
  1. Izaberite ime datoteke za Web stranu.
  2. Navedite podatke za formatiranje Web strane.
  3. Izaberite listu hiperveza koje strana treba da sadrži.
  4. Opredelite se da li ćete strani slati sve podatke ođednom ili deo po deo.

Kada završite sa biranjem, Pritisnite Finish - čarobnjak će uraditi sve ostalo. Na slici 1.13 prikazana je Web strana koju je generisao Web Assistant Wizard.

napomena

O povezivanju SQL Serverovih podataka sa Internetom saznaćete više u poglavljima 21 i 22.

 
Uvod za korisnike

Neki od vas nisu ni administratori ni projektanti nego samo korisnici podataka koji se čuvaju u bazama SQL Servera. To je u redu - ovaj proizvod (kao i ova knjiga) ima dosta toga i za vas. Me?utim, pošto je Microsoft sada izdao verziju Desktop SQL Servera koja radi i pod Windowsom 95 i pod Windowsom 98, veoma je verovatno da će biti sve više onih koji su istovremeno i administratori i projektanti i korisnici. Osim verzije Desktop koja sadrži i alatke za upravljanje, postoji i Microsoft Database Engine (MSDE), što je zapravo SQL Server bez korisničkog interfejsa. MSDE se isporučuje i sa drugim Microsoftovim proizvodima kao što su Microsoft Office i Microsoft Visual Studio.

U ovom odeljku pozabavićemo se alatkama koje su vam na raspolaganju ako želite samo da koristite podatke. Prva na listi je alatka Query Analyzer koja se isporučuje sa SQL Serverom. Me?utim, ne želimo da zapostavimo ni program Microsoft Access 2000, koji je deo paketa Office 2000, jer on pruža veoma jednostavan način pristupa podacima na SQL Serveru.

Alatka Query Analyzer

Za ad hoc upite (to su upiti koji nisu snimljeni u bazu podataka) uz SQL Server isporučuje se alatka Query Analyzer. Pokrenućete je tako što ćete iz menija izabrati Programs Microsoft SQL Server Query Analyzer. Pomoću programa za instaliranje SQL Servera, alatku Query Analyzer možete instalirati na računaru na kome sam SQL Server nije instaliran; u tom slučaju Query Analyzer možete koristiti sa bilo kog računara u mreži.

Kada pokrenete Query Analyzer, moraćete da navedete ime SQL Servera i svoje identifikacione podatke. Posle toga, program će se pokrenuti sa praznim prozorom za upite. Na slici 1.14 prikazan je osnovni interfejs alatke Query Analyzer. U ovom primeru izvršen je jedan upit i otvoren nov prozor za izvršavanje drugog upita. Object Browser, koji se nalazi levo od radnog prostora Query Analyzera, obezbe?uje jednostavan pristup imenima svih objekata SQL Servera. Kao što vidite, Query Analyzer može da prikaže više rezultata istovremeno.

Query Analyzer može da prikaže rezultate izvršenja bilo kog iskaza jezika Transact--SQL (Transact-SQL, ili T-SQL, jeste jezik SQL Servera). Na primer, možete pokušati da izvršite ovaj iskaz u bazi Northwind:

SELECT CompanyName, Country

FROM Customers

WHERE CustomerID > 'MMMMM'

ORDER BY Country

Č;ak i ako ne znate SQL, lako ćete pogoditi šta ovaj iskaz radi - daje vrednosti polja CompanyName i Country iz tabele Customers za sve kupce čija je šifra (CustomerID) veća od (tj. po abecednom redu dolazi posle) "MMMMM". Rezultati se sortiraju po zemlji iz koje je kupac. Iako je SQL specijalizovan jezik, u većini slučajeva možete ga čitati kao govorni engleski jezik i shvatićete o čemu se radi.

napomena

Više o SQL-u saznaćete u poglavljima 5, 6, 7 i 8. Dodatak A sadrži važne iskaze jezika Transact-SQL.

 

 

Ostala svojstva Query Analyzera

Query Analyzer je vrlo fleksibilna alatka pomoću koje možete da obavite još ponešto, na primer, da:

  • sačuvate upite u obliku tekstualnih datoteka i kasnije ih ponovo učitate
  • prikažete rezultate u obliku tabele ili običnog teksta
  • proverite sintaksu upita, a da pri tome ne morate da ga izvršite
  • analizirate indekse u bazi podataka da biste videli hoće li odre?enom upitu pomoći dodatni indeksi
  • napravite plan izvršavanja upita.

O poslednjoj stavci - izradi plana izvršavanja upita - treba reći još koju reč. Plan izvršavanja (engl. execution plan) upita jeste niz koraka koje SQL Server sledi da bi vam pružio informaciju koju ste tražili. Na primer, u upitu SELECT iz prethodnog odeljka, SQL Server bi, pomoću indeksa polja Customer ID, najpre pronašao sve tražene redove, a potom ih sortirao prema zadatom redosledu. Plan izvršavanja složenijih upita može da se sastoji od desetina koraka.

Ako istinski upoznate SQL, moći ćete ponekad da koristite naznake za optimizovanje u upitima, kako biste izmenili plan izvršavanja tako da se vašim podacima brže pristupa.

upozorenje

Nemojte menjati plan izvršavanja ukoliko niste sigurni u ono što radite. SQL Server 2000 je i sam u stanju da dobro optimizuje upite.

 
Povezivanje Accessa 2000 sa SQL Serverom

Mada je Query Analyzer vrlo korisna alatka, njegov interfejs nije baš pristupačan. Morate dobro da poznajte SQL da biste radili s njim. Zar ne bi bilo lepo kada biste mogli da pregledate SQL Serverove podatke pomoću nekog razumljivijeg interfejsa? Ako vam je poznat Microsoftov Access i ako imate Access 2000, možete to da radite.

U Accessu 2000 postoji nova vrsta baze podataka koja se naziva Acessovim projektom. Projekat sadrži sve poznate alatke Accessovog interfejsa, poput obrazaca i izveštaja. Me?utim, umesto da svoje podatke smešta u Jetovu bazu, Accessov projekat ih čuva u SQL Serverovoj bazi podataka. Štaviše, uz Access 2000 se isporučuje verzija SQL Servera za individualne korisnike, Microsoft Database Engine (MSDE).

Podatke iz SQL Serverove baze možete prikazati i tako što ćete napraviti projekat u Accessu. Da biste to uradili, postupite ovako:

Pokrenite Access 2000.
  1. U okviru za dijalog koji se pojavljuje pri otvaranju, izaberite Create a New Database Using Access Database Wizards, Pages and Projects.
  2. U okviru za dijalog New izaberite jezičak General.
  3. Izaberite ikonu Project (Existing Database) pa pritisnite OK.
  4. Zadajte ime projekta pa pritisnite Create.
  5. U okvir za dijalog Data Link Properties upišite ime SQL Servera, podatke za identifikaciju i ime baze podataka pa pritisnite OK.

To bi bilo sve. Kao što se vidi na slici 1.15, izvršavanje ovih koraka sa bazom podataka Northwind dovodi do formiranja Accessovog projekta koji će prikazivati podatke sa SQL Servera. U primeru na slici vidi se jedna od otvorenih tabela na SQL Serveru.

Ažuriranje podataka u Accessu 2000

Kada u Accessu 2000 napravite projekat i vežete ga za bazu SQL Servera, na raspolaganju su vam alatke Accessa 2000. Na primer, pretpostavimo da želite da pregledate i menjate podatke u tabeli Customer i da podaci budu predstavljeni u razumljivom formatu. To ćete lako postići pomoću Access Form Wizarda:

U prozoru Database izaberite tabelu (na primer, Customers - kupci).
  1. Iz Accessovih menija izaberite Insert Form.
  2. Izaberite Autoform (Columnar) pa pritisnite OK.
  3. Rezultat je obrazac sličan onom prikazanom na slici 1.16.

Pomoću ovog obrasca možete obavljati sve osnovne operacije sa podacima:

  • dodavati nove kupce
  • menjati postojeće kupce
  • brisati kupce koji vam više nisu potrebni.
  • upozorenje

    Način na koji je podešen SQL Server može da ograniči mogućnost rada sa podacima. Ako je administrator baze podesio zaštitu SQL Servera tako da vam ažuriranje podataka nije dozvoljeno, onda nećete moći da menjate podatke ni iz Accessovog projekta. Me?utim, ako ste sami svoj administrator i ako radite sa verzijom SQL Servera namenjenoj jednom korisniku, nećete imati taj problem.

     

Slično tome, možete da koristite Accessove čarobnjake za formiranje zbirnih izveštaja i prikazivanje SQL Serverovih podataka u formatu koji je pogodan za štampanje. Kada formirate objekte korisničkog interfejsa, u šta spadaju i izveštaji u Accessovom projektu, ti objekti se snimaju u .ADP datoteku koju formira Access. Svi objekti koji se tiču podataka, kao što su pogledi i tabele, ostaju na serveru.

napomena

Više podataka o Accessovim projektima naći ćete u knjizi Access 2000 priručnik za programere (Paul Litwin, Ken Getz i Mike Gilbert, Mikro knjiga, 2001).

 
Sažetak

U SQL Serveru ne postoji sve što je svima na svetu potrebno, ali ova verzija sigurno sadrži ponešto za svakog korisnika računara. Nivo SQL Servera kreće se od jednostavnih baza sa podacima o kupcima namenjenih jednom korisniku, pa do terabajta (terabajt je jedan trilion znakova) podataka u slučajevima kao što je Microsoftov TerraServer ( http://www.terraserver.microsoft.com ). U ovoj knjizi ćete naučiti više o raznim aspektima SQL Servera:

  • U delu 1 savladećete osnovne koncepte SQL Servera i baza podataka.
  • U delu 2 savladećete Transact-SQL.
  • U delu 3 detaljnije ćemo proučiti osnovne objekte SQL Servera.
  • U delu 4 obuhvaćeni su administratorski poslovi.
  • U delu 5 dat je pregled razvojnih alatki koje se isporučuju sa SQL Serverom.
  • U delu 6 govorimo o objavljivanju SQL Serverovih podataka na Webu.
  • U delu 7 upoznaćemo vas sa naprednim konceptima.

Spremni? Dobro! U narednom poglavlju naučićemo osnovne koncepte baza podataka.