Pomoću programa Access prošetajte se kroz SQL Server

Pomoću programa Access prošetajte se kroz SQL Server

Kada migrirate podatke iz programa Access u SQL Server, imaćete klijent/server bazu podataka, koja može da bude lokalno ili hibridno rešenje Azure oblaka. U svakom slučaju, Access sada predstavlja prezentacioni sloj, a SQL Server je sloj podataka. Sada je dobar trenutak da ponovo razmislite o aspektima rešenja, posebno učinku upita, bezbednosti i poslovnom kontinuitetu, tako da možete da poboljšate i razradite rešenje baze podataka.

Access lokalno i u oblaku

Prvo upoznavanje Access korisnika sa SQL Server i Azure dokumentacijom može se činiti kao težak zadatak. Ovo zahteva „Vodiča za obilazak” koji će vas provesti kroz najvažnije informacije koje su vam bitne. Kada završite ovu ekskurziju, bićete spremni da istražite napredak u tehnologiji baze podataka i da se upustite u duže putovanje.

U ovom članku:

Upravljanje bazom podataka

Uspostavite kontinuitet poslovanja

SQL Server bezbednost

Vodite brigu o privatnosti

Kreiranje snimka baze podataka

Kontrola paralelnog izvršavanja

Upiti i srodne teme

Poboljšanje performansi upita

Načini za izvršavanje upita

Dodavanje ključeva i indeksa

Izvršavanje transakcija

Korišćenje ograničenja i okidača

Tipovi podataka

Korišćenje izračunatih kolona

Vremenske oznake za podatke

Upravljanje većim objektima

Razno

Rad sa hijerarhijskim podacima

Manipulisanje tekstualnog tipa JSON



Resursi

Uspostavite kontinuitet poslovanja

Što se tiče vašeg Access rešenja, trudite se da održavate njegov rad uz minimalne prekide, ali su vaše opcije ograničene sa Access pozadinskom bazom podataka. Pravljenje rezervne kopije Access baze podataka je od suštinskog značaja za zaštitu podataka, ali to zahteva prekid rada. Zatim tu su i neplanirani prekidi u radu zbog održavanja i nadogradnje hardvera/softvera, nestanka struje ili prekida mreže, hardverskih kvarova, bezbednosnih propusta ili hakerskih napada. Da biste umanjili uticaj prekida rada na preduzeće, možete da napravite rezervnu kopiju za SQL Server bazu podataka dok je ona u upotrebi. Pored toga, SQL Server nudi i strategije za visoku dostupnost (HA) i oporavak od katastrofe. Ove dve kombinovane tehnologije se nazivaju HADR. Za više informacija pogledajte članak Kontinualno funkcionisanje i vraćanje baze podataka u prethodno stanje kao i Uspostavite kontinuitet poslovanja pomoću SQL Servera (e-knjiga).

Pravljenje rezervne kopije pri korišćenju

SQL Server koristi proces pravljenja rezervne kopije na mreži dok je baza podataka aktivna. Možete da napravite rezervnu kopiju čitave baze podataka, delimičnu rezervnu kopiju ili rezervnu kopiju datoteke. Rezervna kopija kopira podatke i evidenciju transakcija da bi omogućila potpunu operaciju vraćanja. Posebno kada je reč o lokalnom rešenju, budite svesni razlika između jednostavnih i kompletnih opcija oporavka i načina na koji utiču na povećanje veličine evidencije transakcija. Za više informacija, pogledajte članakModeli za oporavak.

Većina operacija pravljenja rezervne kopije obavlja se odmah, osim operacije upravljanja datotekama i smanjivanja baza podataka. Nasuprot tome, ako pokušate da kreirate ili izbrišete datoteku baze podataka dok je operacija pravljenja rezervne kopije u toku, operacija se neće uspešno izvršiti. Dodatne informacije potražite u članku Pregled rezerve kopije.

HADR

Dve najčešće tehnike za postizanje visoke dostupnosti i kontinuiteta poslovanja su preslikavanje i grupisanje. SQL Server integriše tehnologiju preslikavanja i grupisanja sa „uvek uključenim instancama klastera u slučaju kvara” i „uvek uključenim grupama za dostupnost”.

Preslikavanje je rešenje za kontinuitet na nivou baze podataka koje podržava skoro trenutno preuzimanje posla instance koja padne tako što održava bazu podataka u stanju pripravnosti, punu kopiju ili preslikanu aktivnu bazu podataka na zasebnom hardveru. Ono može da funkcioniše u sinhronom režimu (visoki stepen bezbednosti), gde se dolazna transakcija prosleđuje svim serverima istovremeno ili u asinhronom režimu (visoki učinak), gde se dolazna transakciju prosleđuje aktivnoj bazi podataka, a zatim u nekim unapred određenom trenutku kopira u preslikanu bazu. Preslikavanje je rešenje na nivou baze podataka i funkcioniše samo u bazama podataka koje koriste potpuni model oporavka.

Grupisanje je rešenje na nivou servera koje kombinuje servere u jedinstveno skladište podataka koje korisniku izgleda kao jedna instanca. Korisnici se povezuju sa instancom i nikad ne moraju da znaju koji server u instanci je trenutno aktivan. Ako se desi kvar jednog servera ili treba da bude isključen zbog održavanja, korisničko iskustvo se ne menja. Menadžer klastera nadgleda svaki server u klasteru pomoću otkucaja, tako da otkriva kada se aktivni server u klasteru isključi i pokušava da se neprimetno prebaci na sledeći server u klasteru, iako postoji promenljiva zadrška prilikom prebacivanja.

Za više informacija pogledajte članak Uvek uključen klaster za preuzimanje posla instance koja padne i Uvek uključene grupe: rešenje visoke dostupnosti i oporavka od katastrofe.

Vrh stranice

SQL Server bezbednost

Iako Access bazu podataka možete da zaštitite koristeći Centar za pouzdanost i šifrovanjem baze podataka, SQL Server ima napredne bezbednosne funkcije. Hajde da pogledamo tri mogućnosti koje su dostupne Access korisniku. Više informacija potražite u članku Obezbeđivanje SQL Servera.

Potvrda identiteta baze podataka

Postoje četiri metode potvrde identiteta baze podataka u sistemu SQL Server, svaku od njih možete da navedete u ODBC niski za povezivanje. Više informacija potražite u članku Povezivanje sa podacima iz Azure SQL Server baze podataka ili njihov uvoz. Svaki metod ima svojih prednosti.

Integrisana Windows potvrda identiteta    Koristite Windows akreditive za validaciju korisnika, bezbednosne uloge i ograničavanje korisnika na određene funkcije i podatke. Možete da iskoristite akreditive domena i lako upravljate pravima korisnika u aplikaciji. Ako želite, unesite glavno ime usluge (SPN). Više informacija potražite u članku Izbor režima za potvrdu identiteta.

SQL Server potvrda identiteta    Korisnici trebaju da se povežu koristeći akreditive koji su postavljeni u bazi podataka tako što će uneti ID i lozinku za prijavljivanje kada u okviru sesije prvi put pristupaju bazi podataka. Više informacija potražite u članku Izbor režima za potvrdu identiteta.

Azure Active Directory integrisana potvrda identiteta    Povežite se sa Azure SQL Server bazom podataka koristeći Azure Active Directory. Pošto konfigurišete Azure Active Directory potvrdu identiteta, dodatno prijavljivanje i lozinka nisu potrebni. Više informacija potražite u članku Povezivanje sa SQL bazom podataka pomoću Azure Active Directory potvrde identiteta.

Active Directory potvrda lozinke    Povežite se pomoću akreditiva koji su podešeni u usluzi Azure Active Directory tako što ćete uneti ime za prijavljivanje i lozinku. Više informacija potražite u članku Povezivanje sa SQL bazom podataka pomoću Azure Active Directory potvrde identiteta.

Savet    Koristite „Otkrivanje pretnje” za primanje obaveštenja o neuobičajenoj aktivnosti baze podataka koja ukazuje na potencijalne bezbednosne pretnje po Azure SQL Server bazu podataka. Više informacija potražite u članku Otkrivanje pretnje za SQL bazu podataka.

Bezbednost aplikacija

SQL Server ima dve bezbednosne funkcije na nivou aplikacije koje možete da iskoristite u programu Access.

Dinamičko maskiranje podataka    Sakrijte osetljive informacije tako što ćete ih maskirati od neprivilegovanih korisnika. Na primer, možete da maskirate brojeve socijalnog osiguranja, bilo delimično ili u potpunosti.

Delimična maska podataka

Delimična maska podataka

Potpuna maska podataka

Potpuna maska podataka

Postoji nekoliko načina na koje možete da definišete masku sa podacima i možete da ih primenite na različite tipove podataka. Maskiranje podataka počiva na smernicama na nivou tabele i kolone za definisani skup korisnika i primenjuje se na upit u realnom vremenu. Više informacija potražite u članku Dinamičko maskiranje podataka.

Bezbednost na nivou reda    Pristup određenim redovima baze podataka koji sadrže osetljive informacije na osnovu korisničkih karakteristika možete kontrolisati pomoću bezbednosti na nivou reda. Sistem baze podataka primenjuje ova ograničenja pristupa i to čini bezbednosni sistem pouzdanijim i snažnijim.

Bezbednost reda SQL Servera

Postoje dva tipa bezbednosnih predikata:

  • Filter predikat filtrira redove iz upita. Filter je providan, a krajnji korisnik nije svestan da se vrši bilo kakvo filtriranje.

  • Blok predikat sprečava neovlašćenu radnju i izbacuje izuzetak ako se radnja ne može izvršiti.

Dodatne informacije potražite u članku Bezbednost na nivou reda.

Zaštita podataka pomoću šifrovanja

Zaštitite podatke u stanju mirovanja, u tranzitu i dok je u upotrebi bez uticaja na performanse baze podataka. Za više informacija pogledajte članak Šifrovanje SQL Servera.

Šifriranje pri mirovanju    Da biste obezbedili lične podatke od vanmrežnih napada na medijum na nivou fizičke memorije, koristite šifrovanje pri mirovanju, koje se naziva i „Prozirno šifriranje podataka” (TDE). To znači da su vaši podaci zaštićeni iako je medij ukraden ili nepropisno odbačen. TDE vrši šifrovanje u realnom vremenu i dešifrovanje baza podataka, rezervnih kopija i evidencija transakcija i ne zahteva bilo kakve promene u aplikacijama.

Šifrovanje u tranzitu    Možete da izvršite šifrovanje podataka koji se prenose kroz mrežu da biste podatke zaštitili od „njuškanja” i posredničkih napada. SQL server podržava Transport Layer Security (TLS) 1.2 za veoma bezbednu komunikaciju. Protokol za Tabelarni tok podataka (TDS) koristi se i za zaštitu komunikacija u nepouzdanim mrežama.

Šifrovanje u okviru klijenta u toku korišćenja    Da biste zaštitili lične podatke u toku korišćenja, upotrebite funkciju „Uvek šifrovano” Upravljački program šifruje i dešifruje lične podatke bez otkrivanja ključeva za šifrovanje. Kao rezultat toga, šifrovani podaci su vidljivi samo osobama odgovornim za upravljanje tim podacima ali ne i drugim visoko privilegovanim korisnicima koji ne bi trebalo da imaju pristup. U zavisnosti od izabranog tipa šifrovanja, funkcija „Uvek šifrovano” može da ograniči neke funkcije baze podataka, kao što su pretraživanje, grupisanje i indeksiranje šifrovanih kolona.

Vrh stranice

Vodite brigu o privatnosti

Briga o privatnosti je toliko rasprostranjena da je Evropska Unija definisala pravne zahteve putem opštih propisa o zaštiti podataka (GDPR). Srećom, pozadinski SQL Server je sposoban da odgovori na te zahteve. Razmislite o primeni opštih propisa o zaštiti podataka u tri koraka:

GDPR je proces od tri koraka

1. korak: Ocenite i upravljajte rizikom usaglašenosti

GDPR zahteva da identifikujete i napravite popis ličnih podataka koji se nalaze u tabelama i datotekama. Ovi podaci mogu biti imena, fotografije, e-adrese, detalji bankovnog računa, objavljene poruke na veb lokacijama društvenih mreža, medicinski podaci ili čak IP adrese.

Novi alat, SQL otkrivanje podataka i klasifikacija, ugrađen u SQL Server Management Studio, pomaže vam da otkrijete, klasifikujete, označite i pravite izveštaje o osetljivim podacima primenom dva atributa metapodataka na kolone:

  • Oznake    Da biste definisali osetljivost podataka.

  • Tipovi informacija    Da biste obezbedili dodatnu granularnost o tipovima podataka uskladištenim u koloni.

Još jedan mehanizam za otkrivanje koji možete da koristite je pretraga kompletnog teksta, koji obuhvata korišćenje predikata CONTAINS i FREETEXT kao i funkcije kao što su CONTAINSTABLE i FREETEXTTABLE za korišćenje sa SELECT izjavom. Pomoću pretrage kompletnog teksta možete da pretražite tabele da biste otkrili reči, kombinacije ili varijacije reči kao što su sinonimi ili fleksivni oblici. Za više informacija pogledajte članakPretraga kompletnog teksta.

2. korak: Zaštita ličnih informacija

GDPR zahteva da obezbedite i ograničite pristup ličnim informacijama. Pored standardnih koraka koje možete da preduzmete da biste upravljali pristupom mreži i resursima, kao što su postavke zaštitnog zida, možete da koristite SQL Server bezbednosne funkcije da biste lakše kontrolisali pristup podacima:

  • SQL Server potvrda identiteta za upravljanje korisničkim identitetom i sprečavanje neovlašćenog pristupa.

  • Bezbednost na nivou reda radi ograničavanja pristupa redovima u tabeli na osnovu odnosa između korisnika i tih podataka.

  • Dinamičko maskiranje podataka da bi ograničili izloženost ličnim podacima tako što će ih sakriti od neprivilegovanih korisnika.

  • Šifriranje da biste obezbedili da lični podaci budu zaštićeni tokom prenosa i skladištenja, zaštićeni od ugrožavanja, uključujući na strani servera.

Više informacija potražite u članku Bezbednost SQL Servera.

3. korak: Efikasno odgovaranje na zahteve

GDPR zahteva da vodite evidenciju o obradi ličnih podataka i da tu evidenciju dostavite nadzornim organima na njihov zahtev. Ako se dese problemi koji obuhvataju slučajno objavljivanje podataka, kontrole zaštite vam omogućavaju da brzo reagujete. Podaci moraju brzo da budu dostupni kada je potrebno pravljenje izveštaja. Na primer, GDPR zahteva da se prijavi povreda ličnih podataka nadzornom organu „najkasnije 72 časa nakon što ste postali svesni toga”.

SQL Server 2017 vam pomaže u izveštavanju na nekoliko načina:

  • SQL Server kontrola vam pomaže da obezbedite postojanje trajne evidencije o pristupu bazi i obradi podataka. Ona obavlja detaljan pregled koji prati aktivnosti baze podataka kako bi vam pomogla da razumete i identifikujete potencijalne pretnje, sumnje na zloupotrebu ili kršenja bezbednosti. Možete lako da izvršite forenziku podataka.

  • Vremenske tabele u sistemu SQL Server su korisničke tabele koje su dizajnirane da čuvaju kompletnu istoriju promena podataka. Možete da ih koristite za lako izveštavanje i analizu u bilo kom trenutku.

  • SQL procena ranjivosti vam pomaže da otkrijete probleme sa bezbednošću i dozvolama. Kada se otkrije problem, možete da analizirate izveštaje skeniranja baze podataka kako bi pronašli rešenje.

Više informacija potražite u članku kreiranje platforme poverenja (e-knjiga) i Put do GDPR usaglašenosti.

Vrh stranice

Kreiranje snimka baze podataka

Snimak baze podataka je statični prikaz SQL Server baze podataka u određenom trenutku koji je namenjen samo za čitanje. Iako datoteku Access baze podataka možete da kopirate da biste kreirali snimak baze podataka, Access ne poseduje ugrađenu metodologiju kao SQL Server. Snimak baze podataka možete da koristite za pisanje izveštaja zasnovanih na podacima u trenutku kreiranja snimka baze podataka. Snimak baze podataka možete da koristite i za održavanje istorijskih podataka, kao što je jedan za svaki finansijski kvartal koji koristite za sabiranje izveštaja o kraju perioda. Preporučujemo vam sledeći plan:

  • Imenujte snimak    Svaki snimak baze podataka zahteva jedinstveno ime baze podataka. Dodajte svrhu i vremenski okvir u ime radi lakšeg identifikacije. Na primer, da biste napravili snimak baze podataka AdventureWorks tri puta dnevno u 6-časovnim intervalima između 6 sati pre podne i 6 sati posle podne na osnovu 24-časovnog sata, imenujte snimke AdventureWorks_snapshot_0600, AdventureWorks_snapshot_1200, and AdventureWorks_snapshot_1800.

  • Ograničite broj snimaka    Svaki snimak baze podataka traje sve dok se eksplicitno ne odbaci. Budući da će svaki snimak nastaviti da raste, možda ćete želeti da uštedite prostor na disku tako što ćete izbrisati stariji snimak nakon kreiranja novog snimka. Na primer, ako pravite dnevne izveštaje, zadržite snimak baze podataka 24 časa, a zatim ga odbacite i zamenite novim.

  • Povezivanje sa ispravnim snimkom    Da bi se koristio snimak baze podataka, Access front-end mora da zna tačnu lokaciju. Kada zamenite novi snimak sa postojećim, potrebno je da preusmerite Access na novi snimak. Dodajte logiku u Access front-end da biste bili sigurni da se povezujete sa ispravnim snimkom baze podataka.

Evo kako možete da kreirate snimak baze podataka:

CREATE DATABASE AdventureWorks_dbss1800 ON  
( NAME = AdventureWorks_Data, FILENAME =   
'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Data\AdventureWorks_snapshot_0600' )  
AS SNAPSHOT OF AdventureWorks;  

Više informacija potražite u članku Snimci baze podataka (SQL Server).

Vrh stranice

Kontrola paralelnog izvršavanja

Kada mnogo ljudi odjednom pokušaju da menjaju podatke u bazi podataka, sistem kontrola je neophodan da izmene koje izvrši jedna osoba ne bi negativno uticale na izmene druge osobe. Ovo se zove kontrola paralelnog izvršavanja i postoje dve osnovne strategije za zaključavanje, pesimistička i optimistička. Zaključavanje može sprečiti korisnike da menjaju podatke na način koji utiče na druge korisnike. Zaključavanje omogućava i obezbeđivanje integriteta baze podataka, posebno u slučaju upita koji u suprotnom mogu da dovedu do neočekivanih rezultata. Postoje važne razlike u načinu na koji Access i SQL Server primenjuju ove strategije kontrole paralelnog izvršavanja.

U programu Access, podrazumevana strategija za zaključavanje je optimistička i dodeljuje vlasništvo nad bravom prvoj osobi da pokuša da piše u zapis. Access prikazuje dijalog Neusaglašenost u pisanju drugoj osobi koja istovremeno pokušava da piše u isti zapis. Da bi se otklonila neusaglašenost, druga osoba može da sačuva zapis, da ga kopira u ostavu ili da odustane od promena.

Možete da koristite i svojstvo Zaključavanje zapisa da biste promenili strategiju kontrole paralelnog izvršavanja. Ovo svojstvo utiče na obrasce, izveštaje i upite i ima tri postavke:

  • Bez zaključavanja    U obrascu korisnici mogu da pokušaju da istovremeno uređuju isti zapis, ali može da se pojavi dijalog Neusaglašenost prilikom pisanja. U izveštaju zapisi nisu zaključani dok se izveštaj pregleda ili štampa. U upitima zapisi se ne zaključavaju dok je upit pokrenut. Ovo je način na koji Access primenjuje optimističko zaključavanje.

  • Svi zapisi    Svi zapisi u osnovnoj tabeli ili upitu zaključani su dok je obrazac otvoren u prikazu obrasca ili lista sa podacima, dok se obrazac pregleda ili štampa odnosno dok je pokrenut upit. Korisnici mogu da čitaju zapise tokom zaključavanja.

  • Uređeni zapis    Što se tiče obrazaca i upita, stranica sa zapisima zaključava se čim neki korisnik počne da uređuje bilo koje polje i ostaje zaključana dok se on ne premesti na drugi zapis. Zbog toga zapis može da uređuje samo jedan korisnik istovremeno. Ovo je način na koji Access primenjuje pesimističko zaključavanje.

Više informacija potražite u članku Dijalog „Neusaglašenost u pisanju” i Svojstvo „Zaključavanje zapisa”.

U sistemu SQL Server, kontrola paralelnog izvršavanja radi na ovaj način:

  • Pesimistički    Kada korisnik izvrši radnju koja dovodi do primene zaključavanja, ostali korisnici ne mogu da izvršavaju radnje koje će se sukobiti sa zaključavanjem dok vlasnik ne ukloni zaključavanje. Ova kontrola paralelnog izvršavanja se uglavnom koristi u okruženjima u kojima postoji visoki stepen konkurencije za pristup podacima.

  • Optimistički    U optimističkoj kontroli paralelnog izvršavanja, korisnici ne zaključavaju podatke pri čitaju. Kada korisnik ažurira podatke, sistem proverava da li je drugi korisnik promenio podatke nakon čitanja. Ako je drugi korisnik ažurirao podatke, dolazi do greške. Obično korisnik koji dobije grešku vraća transakciju i počinje ponovo. Ova kontrola paralelnog izvršavanja se uglavnom koristi u okruženjima u kojima postoji niski stepen konkurencije za pristup podacima.

Tip kontrole paralelnog izvršavanja možete da navedete tako što ćete izabrati nekoliko nivoa izolacije transakcije koji definišu nivo zaštite od izmena koje su napravile druge transakcije pomoću SET TRANSACTION izjave:

 SET TRANSACTION ISOLATION LEVEL
 { READ UNCOMMITTED
    | READ COMMITTED
    | REPEATABLE READ  
    | SNAPSHOT
    | SERIALIZABLE
 }

Nivo izolacije

Opis

Čitanje neizvršeno

Transakcije se izoluju samo u onoj meri koliko je potrebno da se osigura da ne dođe do čitanja fizički oštećenih podataka.

Čitanje izvršeno

Transakcije mogu da pročitaju podatke koje je prethodno čitala druga transakcija bez čekanja da se prva transakcija dovrši.

Ponovljivo čitanje

Zaključavanje čitanja i pisanja se obavlja na izabranim podacima do završetka transakcije, ali može doći do fantomskog čitanja.

Snimak

Koristi verziju reda da bi obezbedio doslednost čitanja na nivou transakcije.

Serijalizovano

Transakcije su potpuno izolovane jedna od druge.

Više informacija potražite u članku Vodič za zaključavanje transakcije i kreiranje verzija reda.

Vrh stranice

Poboljšanje performansi upita

Kada uspostavite Access prolazni upit, iskoristite sofisticirane načine na koje SQL Server može da mu omogući efikasniji rad.

Za razliku od Access baze podataka, SQL server omogućava paralelne upite za optimizaciju izvršavanja upita i indeksiranja za računare koji imaju više mikroprocesora (CPU). Budući da SQL server može da izvrši proces upita ili indeksiranja paralelno pomoću nekoliko sistemskih radnih niti, operacija može da se dovrši brzo i efikasno.

Upiti predstavljaju kritičnu komponentu za poboljšanje ukupnog učinka rešenja za bazu podataka. Loši upiti se izvršavaju u nedogled, dosežu vremensko ograničenje i koriste resurse kao što su CPU, memorija i propusnost mreže. Time se ometa dostupnost važnih poslovnih informacija. Čak i jedan loš upit može da dovede do ozbiljnih problema sa performansama baze podataka.

Za više informacija pogledajte članak Brži upiti pomoću sistema SQL Server (e-knjiga).

Optimizacija upita

Nekoliko alata radi zajedno kako bi vam pomoglo da analizirate performanse upita i poboljšate ga: Optimizator upita, planovi izvršavanja i skladište upita.

Kako funkcioniše optimizacija upita

Optimizator upita

Optimizator upita je jedna od najvažnijih komponenti sistema SQL Server. Koristite optimizator upita da biste analizirali upit i odredili najefikasniji način za pristupanje potrebnim podacima. Unos optimizator upita se sastoji od upita, šeme baze podataka (definicija tabele i indeksa) i statistike baze podataka. Izlaz optimizatora upita je plan izvršavanja.

Za više informacija pogledajte članak SQL Server optimizator upita.

Plan izvršavanja

Plan izvršavanja je definicija koja sekvencira izvorne tabele za pristup i metode koji se koriste za izdvajanje podataka iz svake tabele. Optimizacija je proces biranja jednog plana izvršavanja od potencijalno brojnih mogućih planova. Svaki mogući plan izvršavanja ima povezane troškove u vidu količine korišćenih računskih resursa i optimizator upita bira plan sa najnižim procenjenim troškom.

SQL Server mora i dinamički da se prilagođava promenljivim uslovima u bazi podataka. Regresije u planovima izvršavanja upita mogu znatno da utiču na performanse. Određene promene u bazi podataka mogu da dovedu do toga da plan izvršavanja bude neefikasan ili nevažeći, na osnovu novog stanja baze podataka. SQL Server otkriva promene koje poništavaju plan izvršavanja i obeležava plan kao nevažeći.

Novi plan treba ponovo da se kompajlira za sledeću vezu koja izvršava upit. Uslovi koji poništavaju plan uključuju:

  • Promene izvršene u tabeli ili prikazu na koji upućuje upit (ALTER TABLE i ALTER VIEW).

  • Promene u indeksima koje koristi plan izvršavanja.

  • Ažuriranja statističkih podataka koje koristi plan izvršavanja, nastala eksplicitno iz izjave, kao što je UPDATE STATISTICS, ili automatski.

Dodatne informacije potražite u članku Planovi izvršavanja.

Skladište upita

Skladište upita omogućava uvid u izbor i performanse plana izvršavanja. Ono pojednostavljuje rešavanje problema performansi tako što vam pomaže da brzo pronađete razlike u performansama izazvane promenama plana izvršavanja. Skladište upita prikuplja telemetrijske podatke, kao što su istorija upita, planovi, statistika izvršavanja i statistika čekanja. Koristite naredbu ALTER DATABASE za primenu skladišta upita:

ALTER DATABASE AdventureWorks2012 SET QUERY_STORE = ON;

Više informacija potražite u članku Nadgledanje performansi pomoću Skladišta upita.

Automatsko ispravljanje plana

Verovatno najlakši način da poboljšate performanse upita jeste pomoću „Automatskog ispravljanja plana”, što je funkcija dostupna u okviru Azure SQL baze podataka. Samo je uključite i pustite da radi. Neprekidno vrši nadgledanje i analizu plana izvršavanja, otkriva problematične planove izvršavanja i automatski rešava probleme sa performansama. U pozadini, automatska ispravka plana koristi strategiju u četiri koraka da nauči, prilagodi, proveri i ponovi.

Više informacija potražite u članku Automatsko podešavanje.

Prilagodljiva obrada upita

Možete da postignete brže upite tako što ćete nadograditi na SQL Server 2017, koji ima novu funkciju koja se zove prilagodljiva obrada upita. SQL Server prilagođava izbor plana upita na osnovu karakteristika izvršavanja.

Procena kardinalnosti procenjuje približan broj redova koji se obrađuju u svakom koraku plana izvršavanja. Netačne procene mogu da prouzrokuju spori vremenski odziva upita, nepotrebno korišćenje resursa (memorija, CPU i IO), kao i smanjeni protok i paralelno izvršavanje. Tri tehnike se koriste za prilagođavanje karakteristikama opterećenja aplikacije:

  • Povratne informacije za grupni režim dodele memorije    Loše procene kardinalnosti mogu da dovedu do toga da se upiti „prospu na disku” ili da koriste previše memorije. SQL Server 2017 prilagođava dodelu memorije na osnovu povratnih informacija o izvršenju, uklanja prosipanja na disku i poboljšava paralelno izvršavanje za upite koji se ponavljaju.

  • Grupni režim prilagodljivih spajanja    Prilagodljivi spojevi dinamički biraju bolji unutrašnji tip spajanja (spajanja ugnežđene petlje, objedinjena spajanja ili hash spajanja) tokom izvršavanja, na osnovu stvarnih ulaznih redova. Shodno tome, plan se može dinamički prebaciti na bolju strategiju spajanja tokom izvršavanja.

  • Naizmenično izvršavanje    Obrada upita tradicionalno tretira funkcije tabele sa više izjava kao crna kutiju. SQL Server 2017 može bolje da procjeni broj redova da bi poboljšao operacije smanjenja toka.

Možete da napravite da radna opterećenja automatski ispunjavaju uslove za prilagodljivu obradu upita tako što ćete za bazu podataka omogućiti nivo 140 kompatibilnosti:

ALTER DATABASE [YourDatabaseName] SET COMPATIBILITY_LEVEL = 140;

Za više informacija pogledajte članakInteligentna obrada upita u SQL bazama podataka.

Vrh stranice

Načini za izvršavanje upita

U sistemu SQL Server postoji nekoliko načina za izvršavanje upita i svaki od njih ima svoje prednosti. Trebate da znate koje su to prednosti, da biste mogli da napravite ispravan izbor Access rešenja. Najbolji način da kreirate svoje TSQL upite jeste da ih interaktivno uredite i testirate pomoću SQL Server Management Studio (SSMS) Transact-SQL editor, koji ima IntelliSense da Vam pomogne u izboru prave ključne reči i provere da li postoje sintaksičke greške.

Prikazi

U sistemu SQL Server, prikaz je kao virtuelna tabela u kojoj prikaz podataka potiče iz jedne ili više tabela ili drugih prikaza. Međutim, prikazi se tretiraju baš kao i tabele u upitima. Prikazi mogu da sakriju složenosti upita i zaštitite podatke tako što ograničavaju skup redova i kolona. Evo primera jednostavnog prikaza:

CREATE VIEW HumanResources.EmployeeHireDate AS  
SELECT p.FirstName, p.LastName, e.HireDate  
FROM HumanResources.Employee AS e JOIN Person.Person AS p  
ON e.BusinessEntityID = p.BusinessEntityID;

Za najbolji učinak i da biste uredili rezultate prikaza, kreirajte indeksirani prikaz koji se zadržava u bazi podataka kao tabela, ima dodeljeno skladište i može se pretražiti kao bilo koja tabela. Da biste ga upotrebili u programu Access, povežite prikaz na isti način kao što povezujete i tabelu. Evo primera indeksiranog prikaza:

CREATE VIEW Sales.vOrders  
WITH SCHEMABINDING  
AS  
    SELECT SUM(UnitPrice*OrderQty*(1.00-UnitPriceDiscount)) AS Revenue,  
        OrderDate, ProductID, COUNT_BIG(*) AS COUNT  
    FROM Sales.SalesOrderDetail AS od, Sales.SalesOrderHeader AS o  
    WHERE od.SalesOrderID = o.SalesOrderID  
    GROUP BY OrderDate, ProductID;  

CREATE UNIQUE CLUSTERED INDEX IDX_V1   
    ON Sales.vOrders (OrderDate, ProductID);  

Međutim, postoje ograničenja. Ne možete da ažurirate podatke ako se utiče na više od jedne osnovne tabele ili prikaz sadrži zbirne funkcije ili odredbu DISTINCT. Ako SQL server daje poruku o grešci koja saopštava da ne zna koji zapis da izbriše, možda ćete morati da dodate okidač brisanja u prikazu. Konačno, ne možete da koristite odredbu ORDER BY koju možete da koristite u Access upitu.

Više informacija potražite u članku Prikazi i Kreiranje indeksiranih prikaza.

Uskladištene procedure

Uskladištena procedura je grupa od jednog ili više TSQL izraza koji uzimaju ulazne parametre, vraćaju izlazne parametre i ukazuju na uspeh ili neuspeh pomoću vrednosti statusa. One deluju kao posrednički sloj između Access izloženog sloja i SQL Server pozadinskog sloja. Uskladištene procedure mogu da budu jednostavne kao što je SELECT izjava ili složene kao bilo koji program. Evo primera:

CREATE PROCEDURE HumanResources.uspGetEmployees   
    @LastName nvarchar(50),   
    @FirstName nvarchar(50)   
AS   
    SET NOCOUNT ON;  
    SELECT FirstName, LastName, Department  
    FROM HumanResources.vEmployeeDepartmentHistory  
    WHERE FirstName = @FirstName AND LastName = @LastName  
    AND EndDate IS NULL;  

Kada koristite uskladištenu proceduru u programu Access, ona obično vraća skup rezultata u obrazac ili izveštaj. Međutim, ona može da izvrši druge radnje koje ne vraćaju rezultate, kao što su DDL ili DML izjave. Kada koristite prolazni upit, uverite se da ste na odgovarajući način podesili svojstvo Zapisi rezultata.

Više informacija potražite u članku Uskladištene procedure.

Uobičajeni izrazi tabele

Uobičajeni izrazi tabele (CTE) su kao privremena tabela koja generiše imenovani skup rezultata. Oni postoje samo za izvršavanje pojedinačnog upita ili DML izraza. CTE je ugrađena u istu liniju koda kao izraz SELECT ili DML izraz koji je koristi, dok je pravljenje i upotreba privremene tabele ili prikaza obično proces koji se sastoji iz dva koraka. Evo primera:

-- Define the CTE expression name and column list.  
WITH Sales_CTE (SalesPersonID, SalesOrderID, SalesYear)  
AS  
-- Define the CTE query.  
(  
    SELECT SalesPersonID, SalesOrderID, YEAR(OrderDate) AS SalesYear  
    FROM Sales.SalesOrderHeader  
    WHERE SalesPersonID IS NOT NULL  
)  
-- Define the outer query referencing the CTE name.  
SELECT SalesPersonID, COUNT(SalesOrderID) AS TotalSales, SalesYear  
FROM Sales_CTE  
GROUP BY SalesYear, SalesPersonID  
ORDER BY SalesPersonID, SalesYear;

CTE ima nekoliko prednosti uključujući sledeće:

  • Budući da su CTE prolazni, ne morate da ih pravite kao trajne objekte baze podataka, kao što su prikazi.

  • Možete da upućujete na isti CTE više puta u upitu ili DML izjavi, čime će vaš kôd biti lakši za upravljanje.

  • Možete da koristite upite koji upućuju na CTE da definišu kursor.

Više informacija potražite u članku WITH uobičajeni izraz tabele.

Korisnički definisane funkcije

Korisnički definisana funkcija (UDF) može da izvrši upite i izračunavanja, kao i da daje skalarne vrednosti ili skupove rezultata podataka. One su kao funkcije u programskim jezicima koje prihvataju parametre, izvršavaju radnju kao što je složeni proračun i vraćaju rezultat te radnje kao vrednost. Evo primera:

CREATE FUNCTION dbo.ISOweek (@DATE datetime)  
RETURNS int WITH SCHEMABINDING -- Helps improve performance
WITH EXECUTE AS CALLER  
AS  
BEGIN  
     DECLARE @ISOweek int;  
     SET @ISOweek= DATEPART(wk,@DATE)+1  
          -DATEPART(wk,CAST(DATEPART(yy,@DATE) as CHAR(4))+'0104');  
-- Special cases: Jan 1-3 may belong to the previous year  
     IF (@ISOweek=0)   
          SET @ISOweek=dbo.ISOweek(CAST(DATEPART(yy,@DATE)-1   
               AS CHAR(4))+'12'+ CAST(24+DATEPART(DAY,@DATE) AS CHAR(2)))+1;  
-- Special case: Dec 29-31 may belong to the next year  
     IF ((DATEPART(mm,@DATE)=12) AND   
          ((DATEPART(dd,@DATE)-DATEPART(dw,@DATE))>= 28))  
          SET @ISOweek=1;  
     RETURN(@ISOweek);  
END;  
GO  
SET DATEFIRST 1;  
SELECT dbo.ISOweek(CONVERT(DATETIME,'12/26/2004',101)) AS 'ISO Week';  

UDF ima određena ograničenja. Na primer, ne mogu da koriste određene nedeterminističke sistemske funkcije, izvršavaju DML ili DDL izjave ili dinamične SQL upite.

Dodatne informacije potražite u članku Korisnički definisane funkcije.

Vrh stranice

Dodavanje ključeva i indeksa

Koje god sisteme baze podataka koristite, ključevi i indeksi idu ruku pod ruku.

Ključevi

U sistemu SQL Server, proverite da li ste kreirali primarne ključeve za svaku tabelu i strane ključeve za svaku srodnu tabelu. Funkcija SQL servera koja je ekvivalentna tipu podataka Access AutoNumber je svojstvo IDENTITY, koje se može koristiti za kreiranje vrednosti ključeva. Kada primenite ovo svojstvo na bilo koju brojčanu kolonu, ono postaje samo za čitanje i održava ga sistemu baze podataka. Kada umetnete zapis u tabelu koja sadrži kolonu IDENTITY, sistem automatski povećava vrednost kolone IDENTITY za 1 i počinje od 1, ali ove vrednosti možete da kontrolišete pomoću argumenata.

Za više informacija pogledajte članak KREIRAJ TABELU, IDENTITET (svojstvo).

Indeksi

Kao i uvek, izbor indeksa predstavlja balansiranje između brzine upita i troškova ažuriranja. U programu Access imate jedan tip indeksa, ali u sistemu SQL Server imate dvanaest. Srećom, optimizator upita možete da koristite da biste lakše odabrali najefikasniji indeks. A u Azure SQL možete da koristite automatsko upravljanje indeksom, funkciju automatskog podešavanja koja preporučuje dodavanje ili uklanjanje indeksa za vas. Za razliku od programa Access, morate da kreirate sopstvene indekse za sporedne ključeve u sistemu SQL Server. Možete i da kreirate indekse na indeksiranom prikazu da biste poboljšali performanse upita. Loša strana indeksiranog prikaza je povećanje troškova kada vršite izmene podataka u osnovnim tabelama prikaza, zato što i prikaz mora da se ažurira. Više informacija potražite u članku Vodič za SQL Server indeks arhitekturu i dizajniranje i Indeksi.

Vrh stranice

Izvršavanje transakcija

Izvršavanje transakcijskog procesa na mreži (OLTP) je teško kada koristite Access, ali relativno lako sa sistemom SQL Server. Transakcija je jedna jedinica rada koja izvršava sve promena podataka kad bude uspešna, ali poništava promene kada se neuspešno izvrši. Transakcija mora da ima četiri svojstva koja se često nazivaju ACID:

  • Valentnost    Transakcija mora da bude atomska jedinica rada, ili se izvršavaju sve izmene ili se ni jedna izmena ne izvršava.

  • Doslednost    Kada se dovrši, transakcija mora da ostavi sve podatke u usklađenom stanju. To znači da se primenjuju sva pravila integriteta podataka.

  • Izolacija    Promene izvršene istovremnim transakcijama su izolovane od tekuće transakcije.

  • Trajnost    Kada se transakcija dovrši, promjene su trajne čak i u slučaju otkazivanja sistema.

Transakciju možete da koristite da biste obezbedili zagarantovani integritet podataka, kao što je podizanje gotovine na bankomatu ili automatsko deponovanje plate. Možete da izvršite eksplicitne, implicitne ili grupne transakcije. Evo dva TSQL primera:

-- Using an explicit transaction

BEGIN TRANSACTION;  
DELETE FROM HumanResources.JobCandidate  
    WHERE JobCandidateID = 13;  
COMMIT;  

-- the ROLLBACK statement rolls back the INSERT statement, but the created table still exists.

CREATE TABLE ValueTable (id int);  
BEGIN TRANSACTION;  
       INSERT INTO ValueTable VALUES(1);  
       INSERT INTO ValueTable VALUES(2);  
ROLLBACK;

Dodatne informacije potražite u odeljku Transakcije.

Vrh stranice

Korišćenje ograničenja i okidača

Sve baze podataka imaju načine održavanja integriteta podataka.

Ograničenja

U programu Access primenu referencijalnog integriteta u relaciji tabela namećete pomoću parova sporedni ključ-primarni ključ, kaskadnih ažuriranja i brisanja i pravila za proveru valjanosti. Više informacija potražite u članku Vodič za relaciju između tabela i Ograniči unos podataka pomoću pravila za proveru valjanosti.

U sistemu SQL Server koristite UNIQUE i CHECK ograničenja koja predstavljaju objekte baze podataka koji nameću integritet podataka u SQL Server tabelama. Da biste proverili da li je vrednost važeća u drugoj tabeli, koristite ograničenje sporednog ključa. Da biste potvrdili da li je neka vrednost u koloni u određenom opsegu, koristite ograničenje „Check“. Ti objekti su vaša prva linija odbrane i dizajnirani su da efikasno funkcionišu. Više informacija potražite u članku jedinstvena ograničenja i check ograničenja.

Pokretači

Access nema pokretače baze podataka. U sistemu SQL Server možete da koristite pokretače za nametanje složenih pravila za integritet podataka i za pokretanje ove poslovne logike na serveru. Pokretač baze podataka je uskladištena procedura koja se pokreće kada se određene radnje dešavaju u bazi podataka. Pokretač je događaj, kao što je dodavanje ili brisanje zapisa u tabelu, koji aktivira i zatim izvršava uskladištenu proceduru. Iako Access baza podataka može da osigura referencijalni integritet kada korisnik pokuša da ažurira ili izbriše podatke, SQL Server ima sofisticirani skup pokretača. Na primer, možete da programirate pokretač da izbriše zapise masovno, kao i da obezbedi integritet podataka. Možete čak i da dodate pokretače u tabele i prikaze.

Za više informacija pogledajte članak Pokretači - DML, Pokretači - DDL i Dizajniranje T-SQL pokretača.

Vrh stranice

Korišćenje izračunatih kolona

U programu Access kreirate izračunatu kolonu tako što je dodajete u upit i pravite izraz, kao što je:

Extended Price: [Quantity] * [Unit Price]

U sistemu SQL Server, ekvivalentna funkcija se zove izračunata kolona, što je virtuelna kolona koja nije fizički uskladištena u tabeli, osim ako kolona nije označena kao trajna. Izračunata kolona u izrazu koristi podatke iz drugih kolona. Da biste napravili izračunati kolonu, dodajte je u tabelu. Na primer:

CREATE TABLE dbo.Products   
(  
    ProductID int IDENTITY (1,1) NOT NULL  
  , QtyAvailable smallint  
  , UnitPrice money  
  , InventoryValue AS QtyAvailable * UnitPrice  
);  

Više informacija potražite u članku Navođenje izračunatih kolona u tabeli.

Vrh stranice

Vremenske oznake za podatke

Ponekad ćete dodati polje tabele da biste ubeležili vremensku oznaku kada se zapis kreira tako da možete da evidentirate unos podataka. U programu Access možete jednostavno da kreirate kolonu „datum” sa podrazumevanom vrednošću =Now(). Da biste ubeležili datum ili vreme u sistemu SQL Server, koristite tip podataka datetime2 sa podrazumevanom vrednošću SYSDATETIME().

Napomena    Nemojte da mešate pojam „rowversion” sa dodavanjem vremenske oznake podacima. Ključna reč „timestamp” je sinonim za „rowversion” u sistemu SQL Server, ali trebate da koristite ključnu reč „rowversion”. U sistemu SQL Server, „rowversion” je tip podataka koji otkriva automatski generisane, jedinstvene binarne brojeve u okviru baze podataka i obično se koristi kao mehanizam za označavanje verzije redova u tabeli. Međutim, tip podataka „rowversion” je samo broj koji se povećava, ne čuva datum ili vreme i nije namenjen za dodavanje vremenske oznake redu.

Dodatne informacije potražite u članku rowversion. Više informacija o korišćenju „rowversion” za umanjite neusaglašenosti zapisa potražite u članku Migriranje Access baze podataka na SQL Server.

Vrh stranice

Upravljanje većim objektima

U programu Access upravljate nestrukturiranim podacima, kao što su datoteke, fotografije i slike pomoću tipa podataka „prilog”. U SQL Server terminologiji, nestrukturirani podaci se nazivaju „Blob” (binarni veliki objekat) i postoji nekoliko načina za rad sa njima:

FILESTREAM    Koristi varbinarni (max) tip podataka za skladištenje nestrukturiranih podataka u sistemu datoteka umesto u bazu podataka. Više informacija potražite u članku Access FILESTREAM podaci sa Transact-SQL.

Tabela datoteka    Skladišti blob objekte u specijalnim tabelama koji se nazivaju „Tabele datoteka” i pruža kompatibilnost sa Windows aplikacijama kao da su uskladištene u sistemu datoteka i bez menjanja klijentskih aplikacija. Tabela datoteka zahteva upotrebu FILESTREAM. Dodatne informacije potražite u članku Tabele Datoteka.

Udaljeno BLOB skladište (RBS)    Skladišti binarne velike objekte (BLOBs) u rešenja za skladištenje robe umesto direktno na serveru. Ovo štedi prostor i smanjuje resurse hardvera. Više informacija potražite u članku Binarni veliki objekat (BLOB) podaci.

Vrh stranice

Rad sa hijerarhijskim podacima

Iako su relacione baze podataka kao što je Access vrlo fleksibilne, rad sa hijerarhijskim relacijama je izuzetak i često zahteva složene SQL izjave ili kôd. Primeri hijerarhijskih podataka uključuju: organizacionu strukturu, sistem datoteka, klasifikaciju jezičkih izraza i grafikon veza između veb stranica. SQL Server ima ugrađen hierarchyid tip podataka i skup hijerarhijskih funkcija za lako uskladištenje, pretragu i upravljanje hijerarhijskim podacima.

Tipična hijerarhija

Za više informacija pogledajte članak Hijerarhijski podaci i Uputstvo: Korišćenje „hijerarhijskog tipa podataka.

Vrh stranice

Manipulisanje tekstualnog tipa JSON

JavaScript Object Notation (JSON) je veb usluga koja koristi tekst koji se može čitati za prenos podataka u vidu parova atribut–vrednost u asinhronoj komunikaciji između pregledača i servera. Na primer:

{
"firstName": "Mary",
"lastName": "Contrary",
"spouse": null,
"age": 27
}

Access ne sadrži ugrađene načine za upravljanje JSON podacima, već u sistemu SQL Server možete nesmetano da skladištite, indeksirate, pretražujete i izdvajate JSON podatke. Možete da pretvorite i uskladištite JSON tekst u tabeli ili oblikujte podatke kao JSON tekst. Na primer, možda ćete želeti da oblikujete rezultate upita kao JSON za veb aplikaciju ili da dodate JSON strukture podataka u redove i kolone.

Napomena    Funkcija JSON nije podržana u VBA programu. Alternativno možete da koristite XML u VBA pomoću biblioteke MSXML.

Više informacija potražite u članku JSON podaci u sistemu SQL Server.

Vrh stranice

Resursi

Sada je pogodan trenutak da saznate više o sistemu SQL Server i Transact SQL (TSQL). Kao što ste videli, postoji više funkcija kao što je Access, ali i mogućnosti koje Access jednostavno nema. Da biste ekskurziju podigli na sledeći nivo, evo nekih resursa za učenje:

Resurs

Opis

Upit pomoću Transact-SQL

Kurs zasnovan na video zapisima

Uputstva za mašinu baze podataka

Uputstva za sistem SQL Server 2017

Microsoft Learn

Praktična obuka za Azure

SQL Server obuka i sertifikacija

Postanite stručnjak

SQL Server 2017

Glavna stranica

SQL Server dokumentacija

Pronađite pomoć

Dokumentacija za Azure SQL baza podataka

Informacije pomoći

Osnovni vodič za podatke u oblaku (e-knjiga)

Pregled oblaka

SQL Server 2017 list sa podacima

Vizuelni rezime novih funkcija

Poređenje verzija Microsoft Exchange servera

Rezime funkcija po verzijama

Microsoft SQL Server Express Editions

Preuzmite SQL Server Express 2017

SQL probne baze podataka

Preuzmite probne baze podataka

Vrh stranice

Razvijte Office veštine
Istražite obuku
Prvi nabavite nove funkcije
Pridružite se Office Insider korisnicima

Da li su vam ove informacije koristile?

Hvala vam na povratnim informacijama!

Hvala za povratne informacije! Izgleda da će biti od pomoći ako vas povežemo sa našim agentima Office podrške.

×