Documente Academic
Documente Profesional
Documente Cultură
Sunt muli cei care lucreaz n IT i pentru care MSSQL este nc o necunoscut.
ntr-un environment bazat pe arhitectura Microsoft, MSSQL (Microsoft SQL Server) a devenit o component de baz att pentru
produse software special dezvoltate unui anume business, ct i pentru servicii / produse software care fac parte deja din
environment (Microsoft ISA Server, WSUS, Windows SharePoint Services, Windows Rights Management Services, Microsoft
Office Sharepoint Server, System Center Configuration Manager, System Center Operations Manager, Visual Studio Team
Foundation
Server,
etc.).
De asemeni, sunt muli dezvoltatori care nu au avut ocazia de a instala i configura o instan MSSQL (deoarece aceste activiti
au stat n seama unui personal specializat). Ali sysadmini doresc migrarea soluiilor pe arhitecturi Microsoft (aplicaii PHP, Java ce
pot
fi
portate
pe
diferite
arhitecturi).
Pe scurt, prezentul articol va face referire la MSSQL astfel nct ntr-un interval de 1.5 3 ore s putei dobndi cunotinele de
baz:
instalarea MSSQL;
folosirea instrumentelor generice MSSQL;
managementul accesului;
managementul permisiunilor;
reindexarea;
(deoarece marea majoritate a acestor operaiuni este uor de realizat prin intermediul SQL Server Management Studio, n
prezentul articol am s m axez mai mult pe realizarea acestor operaiuni din linie de comand)
Acest articol am s l scriu n dou pri:
Protocoale;
Porturi;
T-SQL (Transact-SQL);
Servicii MSSQL;
Instrumente necesare;
Ce
(seciune dedicat nceptorilor)
este
un
SGBD?
Un Sistem de Gestiune a Bazelor de Date (eng. DBMS - Database management system), este un set complex de programe ce
permite organizarea, pstrarea, extragerea datelor din bazele de date. SGBD-urile utilizeaz anumite modele conceptuale pentru a
putea
gestiona
datele:
ierarhic,
reea,
relaional,
obiectual
i
obiectual-relaional.
Modelul relaional este i va rmne o lung perioad de timp (dup spusele mai marilor n ale bazelor de date), cel mai utilizat
model conceptual. Cel ce a dezvoltat acest model a fost Edgar Frank "Ted" Codd (23 August 1923 18 Aprilie 2003) un
specialist de origine britanic ce a adus contribuii semnificative n tiina calculatoarelor. Modelul relaional a luat natere cnd
E.F.Codd lucra la IBM (anii 70), perioad n care a publicat un articol A Relational Model of Data for Large Shared Data Banks n
care
a
enunat
treisprezece
reguli
ce
vizeaz
modelul
relaional.
O baz de date reprezint o colecie de date utilizat ntr-o organizaie, colecie care este automatizat, partajat, definit riguros
(formalizat)
i
controlat
la
nivel
central.
O baz de date relaional (BDR) poate fi definit ca un ansamblu de tabele; fiecare tabel, alctuit din linii (tupluri), are un nume
unic i este stocat pe suport extern (de obicei disc). La intersecia unei linii cu o coloan se gsete o valoare atomic.
Un tuplu sau o linie este alctuit() din mai multe cmpuri (coloane sau atribute) i regrupeaz informaii referitoare la un obiect,
eveniment etc., altfel spus, informaii referitoare la o entitate: o carte, un student, o localitate, un angajat al unei firme, o factur
emis etc. Ordinea tuplurilor nu prezint importan din punctul de vedere al coninutul informaional al tabelei (Marin Fotache
Proiectarea
bazelor
de
date
(cap.2
pag.33),
Editura
Polirom).
Teoria relaional spune c ntr-un tabel, nu pot exista dou linii identice. Identificarea unei linii se face prin intermediul atributelor
(cmpurilor) care o compun (valorile lor trebuie s fie unice). Cheia primar a unei tabele este un atribut sau un ansamblu de
atribute care identific fr ambiguitate fiecare nregistrare. Exist i cteva restricii n privina cheilor primare: unicitate (s
permit identificarea unui singur tuplu dintr-o tabel), compoziie minimal (n cazul n care cheia primar este compus din mai
multe atribute, nici un atribut din cheie s nu poat fi eliminat fr a distruge condiia de unicitate a nregistrrilor), valori non-nule
(numit i restricie a entitii valorile atributelor sau ansamblurilor de atribute, nu pot lua dect valori ne-nule).
Un alt lucru important n bazele de date relaionale l reprezint organizarea tabelelor. Procedeul prin care datele sunt grupate pe
tabele distincte, se numete normalizare. Acest procedeu presupune parcurgerea unor etape de transformare succesive, pn
cnd baza de date este adus la o form optimizat. Normalizarea nu este un proces uor iar lucrarea de fa nu i propune
discutarea n detaliu al acestui subiect. Putem spune doar c exist cinci forme de normalizare, fiecare pas n normalizare
presupune aducerea bazei de date la o form standard. Principalele obiective ale normalizrii sunt reducerea pe ct mai mult
posibil a redundanei datelor i eliminarea anomaliilor aprute la inserare, modificare, tergere.
Datele unei baze de date pot fi exploatate prin intermediul limbajului de interogare SQL (Structured Query Language). Acesta este
un limbaj standardizat ce este folosit de ctre mai toate sistemele de gestiune a bazelor de date. Prin intermediul acestui limbaj se
pot:
etc.
MSSQL
(seciune dedicat nceptorilor)
Server
(prima
baz
de
date
poate
bazelor
gzdui
fi
de
date
mai
compus
produs de
multe
din
parte)
ctre compania
instane
mai
Microsoft.
MSSQL.
multe
fiiere.
.mdf ntlnite i sub denumirea de primary files sau main files. Acest fiier gzduiete obiectele unei baze de date
(tabele, proceduri stocate, declanatori, etc.). O baz de date poate s aib maximum un fiier .mdf.
.ndf secondary database file. n principal .ndf-ul este folosit n cazul optimizrilor. Spre exemplu: anumite tabele pot fi
salvate n fiiere .ndf, fiiere ce vor fi gzduite n locaii diferite, pe discuri diferite. O baz de date poate avea zero sau
mai multe fiiere .ndf.
.ldf transaction log files acest fiier va pstra un istoric al operaiunilor efectuate asupra datelor bazei de date.
Protocoale
Shared Memory: este cel mai simplist protocol de comunicaie cu MSSQL (nici nu necesit configurri). Accesul la o
instan MSSQL prin intermediul Shared Memory poate fi fcut doar dac resursa care acceseaz instana MSSQL este
gzduit pe aceeai main pe care este gzduit i SGBD-ul. n general se apeleaz la Shared Memory n momentul n
care celelalte protocoale de comunicaie sunt dezactivate sau greit configurate.
Named Pipes: acest protocol este indicat a fi folosit n cazul reelelor locale, sau n cazul local named pipes (caz n care
resursa care acceseaz instana MSSQL este gzduit pe aceeai main pe care este gzduit i SGBD-ul).
TCP/IP: acest protocol este indicat a fi folosit n cazul WAN (wide area networks), a reelelor dial-up, etc. n cazul LANurilor, diferenele dintre Named Pipes i TCP/IP sunt insesizabile, dar e important de tiut faptul c o instan MSSQL
poate fi configurat s foloseasc mai multe protocoale simultan.
VIA: Virtual Interface Adapter folosit n cazul conectrii cu hardware specializat i n cazurile n care canalul de
comunicaie este unul dedicat. Sunt rare cazurile n care este necesar a configura i utiliza acest protocol.
Porturi
Depinde
mult
de
configuraia
aleas!
TCP
1433
este
portul
folosit
de
instana
implicit
MSSQL.
UDP 1434 este folosit de serviciul SQL Server Browser. (pe parcursul acestui articol am s aduc completri legate de SQL Server
Browser)
n cazul n care este nevoie, portul instanei MSSQL poate fi stabilit de ctre sysadmin (altul dect TCP 1433).
Putem avea i situaii n care portul s fie alocat dinamic. Mai exact, acest lucru este ntlnit atunci cnd pe acelai server gzduim
mai multe instane MSSQL. n cazul instanelor MSSQL putem avea de-a face cu instane MSSQL implicite (eng. default instance)
sau instane crora le-a fost alocat un nume (eng. named instance, n romn am gsit formularea instan denumit). Pe un
server
putem
avea
cel
mult
o
instan
implicit
i
zero
sau
mai
multe
instane
denumite.
OK, deci n cazul n care pe un server instalm mai multe instane MSSQL, avem dou posibiliti:
n aceste cazuri, SQL Server Browser i intr n rol i va putea rspunde cererilor venite pe reea, astfel nct s informeze clienii
de portul alocat unei instane denumite. (voi exemplifica n seciunea Publicarea instanelor MSSQL)
Doar instanele denumite (eng. named instances) pot fi configurate a li se aloca porturi n mod dinamic (caz n care serviciul SQL
Server Browser este necesar a fi pornit i publicat). Dac avem de-a face cu o singur instan implict, putem renuna la serviciul
SQL Server Browser (implicit instana default este configurat a folosi TCP 1433). http://technet.microsoft.com/enus/library/ms143531.aspx
T-SQL
http://msdn.microsoft.com/en-us/library/ms189826(SQL.90).aspx
(Transact-SQL)
Transact-SQL este o extensie a limbajului SQL ce permite adugarea n (mod programatic) de funcionaliti ce nu sunt definite
implicit n SQL. Cu ajutorul T-SQL putem defini variabile, proceduri stocate, funcii, controla excepii, etc.
Servicii MSSQL
Pe lng rolul de SGBD, MSSQL (n funcie de ediie) poate oferi i servicii precum:
Service Broker;
Replication Services;
Analysis Services;
Reporting Services;
Notification Services;
Integration Services;
Enterprise
Standard
Workgroup
Web
Developer
Express
Compact 3.5
2008
Ultima ediie MSSQL Express disponibil la momentul scrierii acestui articol este Microsoft SQL Server 2008 R2 Express Edition.
Aceast versiune MSSQL poate fi folosit att n procesul de nvare ct i n cazul distribuiei de software.
Totui, acestei ediii i-au fost aduse intenionat anumite limitri:
max 1 CPU;
max 1 GB;
(exemplele
din
cadrul
acestui
articol
sunt
realizate
http://www.microsoft.com/sqlserver/2008/en/us/express.aspx
Maximum
Capacity
Specifications
http://technet.microsoft.com/en-us/library/ms143432.aspx
pe
for
baza
unei
SQL
instane
MSSQL
Server
Express)
2008
Instrumente necesare
SQLCMD este utilitarul linie de comand prin intermediul cruia se pot efectua diferite operaii cu MSSQL (permite
apelarea comenzilor SQL, execuia scripturilor, etc.). SQLCMD este utilitarul introdus odat cu Microsoft SQL Server 2005
i este succesorul OSQL (utilitar cu funcii asemntoare aprut odat cu Microsoft SQL Server 2000). Se poate folosi i
OSQL n cazul MSSQL Server 2005, MSSQL Server 2008, doar c OSQL nu acoper n totalitate funcionalitile
SQLCMD.
SQL Server Management Studio este utilitarul cu interfa grafic utilizator i este ideal n cazul manipulrii unei
instane MSSQL. Trebuie tiut faptul c SQL Server Management Studio poate fi gsit i n versiune Express, versiune
care poate fi folosit gratuit (evident, spre deosebire de SQL Server Management Studio, versiunea Express are anumite
limitri).
Business Intelligence Development Studio este mediul integrat de dezvoltare ce este folosit n special pentru
manipularea cuburilor OLAP, data mining, reporting services, etc.
X86 Package;
X64 Package;
IA64 Package;
n prezentul articol voi discuta doar despre rolul de SGBD, aadar n etapa de instalare am selectat doar componentele strict
necesare:
Implicit (n cazul ediiilor EXPRESS), n etapa de instalare opiunea implicit este cea de instalare a instanelor denumite
(eng. named instances).
n aceast etap de instalare putem configura conturile utilizator sub care serviciile windows asociate instanei MSSQL vor fi
pornite. Lsai valorile implicite i trecei la pasul urmtor.
Implicit, n etapa de instalare, modul de autentificare la o instan MSSQL este Windows authentication mode. Asta nseamn c
autentificarea se va realiza pe baza unui cont utilizator Windows, iar sistemul de operare va fi cel care va confirma identitatea
userului. n cazul Windows authentication mode, instana MSSQL nu va cere nici o parol i nici nu va efectua verificri asupra
identitii. Recomandat ar fi ca instanele MSSQL s fie configurate a folosi doar Windows authentication modedeoarece:
pot fi impuse n mod centralizat politici privind complexitatea, durata de valabilitate a parolelor;
n cazul aplicaiilor, nu este necesar salvarea n clar a userului i a parolei de acces (att timp ct aplicaia este
executat sub credenialele contului utilizator pentru care s-a alocat acces explicit n instana MSSQL);
etc.
furnizarea userului i a parolei de fiecare dat cnd se realizeaz autentificarea la instana MSSQL;
etc;
Indiferent de opiunea aleas n etapa de instalare (Windows authentication mode sau Mixed mode), pentru fiecare instan
MSSQL instalat va fi realizat contul MSSQL sa. n cazul Windows authentication mode, userul va fi creat, dar contul nu va fi activ
(deci, nu va fi posibil conectarea la instana MSSQL pe baza acestui user). n cazul Mixed mode, userul va fi creat, iar imediat
dup instalare, va fi posibil conectarea pe baza contului SQL.
n cadrul aceluiai pas de instalare (Database Engine Configuration), n cadrul de pagin Data Directories putei s configurai:
etc.
Recomand ca att instalarea instanei MSSQL ct i gzduirea bazelor de date s fie fcute pe volume diferite de cel pe care este
gzduit sistemul de operare. (n cazul acestui articol, am s pstrez configuraia implicit, dat fiind faptul c instanele MSSQL nu
vor fi publicate n mediul de producie)
MSSQL
Server
(seciune dedicat nceptorilor)
(partea
configurarea ALIAS-urilor;
doua)
Aa cum am menionat n seciunea Instalarea Microsoft SQL Server 2008 R2 Express Edition am decis instalarea a dou
instane
MSSQL
doar
pentru
a
completa
mai
multe
scenarii.
n imaginea anterioar sunt listate serviciile windows asociate instanelor MSSQL existente pe maina local.
SQL Server (SQLEXPRESS) acest serviciu este asociat instanei denumite (WEB01\SQLEXPRESS). Practic, oprirea /
pornirea / repornirea acestei instane se poate realiza prin intermediul consolei SQL Server Configuration Manager.
SQL Server Agent (SQLEXPRESS) fiecare instan MSSQL are propriul agent. Acest serviciu are rolul de a executa
diverse activiti de mentenan.
pornirea agentului;
etc.
Activiti de mentenan:
backup;
reindexare;
statistici;
etc.
n cazul ediiilor EXPRESS, SQL Server Agent este instalat odat cu instana MSSQL dar nu poate fi pornit (de fapt
ncercrile de pornire ale agentului se vor finaliza cu mesaje de eroare). O alternativ la SQL Server Agent (n cazul
ediiilor EXPRESS) ar fi utilizarea scheduled task-urilor. n cadrul acestui articol am s prezint cum putem realiza (din linia
de comand) marea majoritate a operaiunilor, deci SQL Server Agent va fi uor de nlocuit cu task-uri programate.
SQL Server Browser este serviciul windows care rspunde cererilor de conectare. De fapt acest serviciu poate informa
(un client) care sunt instanele MSSQL instalate pe maina local, precum i porturile TCP asociate instanelor denumite.
(voi exemplifica n seciunea Publicarea instanelor MSSQL)
Implicit, dup instalarea instanelor MSSQL (ediiile EXPRESS), trebuie tiut faptul c:
agenii SQL asociai fiecarei instane sunt oprii (nu se va putea efectua pornirea lor);
serviciul SQL Server Browser este oprit;
Shared Memory este singurul protocol activ per fiecare instan MSSQL;
Activarea TCP/IP
Dup cum se poate vedea n imaginea anterioar, instana implicit (eng. default instance) este configurat a folosi portul TCP
1433.
n cazul instanelor denumite, implict acestea sunt configurate a aloca portul TCP n mod dinamic (portul instanei MSSQL va fi
alocat la fiecare repornire a instanei - deci nu ne va fi garantat faptul c de fiecare dat va fi alocat acelai port TCP).
Deorece avem o instan MSSQL denumit (configurat a aloca porturi TCP n mod dinamic), ne vom folosi de serviciul SQL
Server Browser pentru a rspunde cererilor de conectare.
Primele verificri
OK, dup repornirea instanelor MSSQL, verific cum anume sunt alocate porturile TCP pentru cele dou instane (inclusiv SQL
Server Browser).
Aa cum tiam nc de la bun nceput, instana MSSQL implicit a fost configurat a folosi TCP 1433.
Instana denumit a fost configurat a aloca n mod dinamic portul TCP. Din imaginea anterioar, se poate observa faptul c
instana WEB01\SQLEXPRESS a fost publicat pe TCP 49157.
SQL
Server
Browser
UDP
1434.
Pentru a putea apela instanele MSSQL pe baza denumirii NETBIOS, activai regulile NB-Name-In & Pub-WSD-In.
Deoarece implicit nu exist nici o regul realizat pentru publicarea instanelor MSSQL, va fi necesar definirea i activarea
acestora.
Publicarea SQL Server Browser
Instana denumit WEB01\SQLEXPRESS este configurat a aloca porturi n mod dinamic, deci avem nevoie ca serviciul SQL
Server Browser s rspund cererilor de identificare.
final,
toate
regulile
definite
trebuiesc
activate.
n imaginea anterioar, rezolvarea denumirii NETBIOS n adresa IP este evideniat n frame-urile 1,2,3 i 4. Deci, staia client va
ti c WEB01 este de fapt resursa al crei adres IP este 192.168.5.2.
Dup ce a fost rezolvat denumirea NETBIOS, urmeaz conectarea la instana SQLEXPRESS. Dat fiind faptul c aceast instan
este denumit, SQL Server Management Studio Express va trimite (192.168.5.1) o cerere ctre (192.168.5.2) SQL Server Browser
(UDP 1434).
Serviciul windows SQL Server Browser gzduit pe WEB01 (192.168.5.2) va rspunde cererii i va informa clientul (SQL Server
Management Studio Express - 192.168.5.1) faptul c instana SQLEXPRESS este publicat pe portul TCP 49157.
1.
2.
3.
4.
Listarea tabelelor
5.
Listarea coloanelor
6.
Listarea indecilor
7.
8.
9.
Listarea funciilor
putem
instane
MSSQL
nelegem
poate
configuraia
fi
efectuat
instanei
prin
MSSQL.
Listarea tabelelor
n cazul n care managementul unei instane MSSQL se realizeaz n linie de comand, sys.sp_tables i sys.tables sunt folosite
pentru
obinerea
de
date
referitoare
la
tabelele
unei
baze
de
date.
ThingsAnITSpecShouldKnowTSQL26.sql
Listarea coloanelor
sys.sp_columns i sys.columns sunt folosite n cazul n care se dorete listarea coloanelor ce compun un anume tabel a bazei de
date.
ThingsAnITSpecShouldKnowTSQL27.sql
Listarea indecilor
Ce sunt indecii?
Listarea
indecilor
se
ThingsAnITSpecShouldKnowTSQL28.sql
poate
realiza
prin
intermediul sys.indexes.
date
referitoare
lor
pot
fi
obinute
prin
sys.sql_modules, sys.objects
ThingsAnITSpecShouldKnowTSQL30.sql
Listarea funciilor
Ce sunt UDF-urile?
sys.sql_modules, sys.objects
ThingsAnITSpecShouldKnowTSQL31.sql
CREATE DATABASE
Ataarea
unei
baze
de
date
ThingsAnITSpecShouldKnowTSQL34.sql
se
poate
realiza
prin
intermediul CREATE
DATABASE.
se
poate
realiza
prin
intermediul
urmtoarei
fraze
SELECT-SQL
unui
index.
unui
index.
Stabilii intervalul de timp maximum admis n care bazele de date trebuiesc restaurate.
Stabilii locaia unde copiile de siguran vor fi pstrate. "Copiile de siguran vor fi salvate pe discurile locale, discuri
externe, n reea? Dorii a efectua copii ale copiilor de siguran?"
Stabilii intervalul de timp pentru care copiile de siguran trebuiesc pstrate / arhivate.
La perioade de timp regulate, reverificai procedurile de backup & restore. n mediul de test testai corectitudinea lor.
etc.
full backup: se realizeaz o copie n ntregime a bazei de date. Toate celelalte tipuri de backup se bazeaz pe existena
unei astfel de copii de siguran. Acest tip de backup se realizeaz cu baza de date activ (fiind permis accesul i
eventualele modificri) i poate fi efectuat indiferent de tipul de model de restaurare (eng: database recovery model:
SIMPLE, BULK_LOGGED, FULL).
differential backup: realizeaz o copie de siguran doar a modificrilor aprute de la ultimul full backup. Acest tip de
backup se realizeaz online i poate fi efectuat indiferent de tipul de model de restaurare (SIMPLE, BULK_LOGGED,
FULL).
transaction log backup: efectueaz o copie de siguran de la ultimul full backup, differential backup sau transaction log
backup. Operaia de backup se realizeaz online, nu este att de consumatoare de resurse precum copia n ntregime a
unei baze de date, i se poate aplica doar asupra bazelor de date ale cror model de restaurare este BULK_LOGGED
sau FULL.
BACKUP DATABASE
Exemplu
ThingsAnITSpecShouldKnowTSQL40.sql
full
backup.
differential
backup.
BACKUP DATABASE
Exemplu
ThingsAnITSpecShouldKnowTSQL41.sql
BACKUP DATABASE
Exemplu
transaction
ThingsAnITSpecShouldKnowTSQL42.sql
RESTORE LABELONLY
ThingsAnITSpecShouldKnowTSQL43.sql
log
backup.
RESTORE HEADERONLY
ThingsAnITSpecShouldKnowTSQL44.sql
RESTORE FILELISTONLY
ThingsAnITSpecShouldKnowTSQL45.sql
RESTORE DATABASE
Exemplu
restaurare
baz
ThingsAnITSpecShouldKnowTSQL46.sql
date
pe
baza
copiei
de
siguran
full.
RESTORE DATABASE
Exemplu
restaurare
baz
date
ThingsAnITSpecShouldKnowTSQL47.sql
pe
baza
copiilor
de
siguran
full
differential.
RESTORE DATABASE
Exemplu
restaurare
baz
date
pe
ThingsAnITSpecShouldKnowTSQL48.sql
baza
copiilor
de
siguran
full,
differential
transaction
log.
S presupunem c baza de date Comanda este configurat n modul de restaurare FULL, iar realizarea copiilor de siguran se
realizeaz conform secvenei:
Zi
Ora
Tip backup
05:00 AM Differential backup
11:00 AM Transaction log backup
Luni
04:30 PM Transaction log backup
10:30 PM Transaction log backup
05:00 AM Differential backup
11:00 AM Transaction log backup
Mari
04:30 PM Transaction log backup
10:30 PM Transaction log backup
05:00 AM Differential backup
11:00 AM Transaction log backup
Miercuri
04:30 PM Transaction log backup
10:30 PM Transaction log backup
05:00 AM Differential backup
11:00 AM Transaction log backup
Joi
04:30 PM Transaction log backup
10:30 PM Transaction log backup
05:00 AM Differential backup
11:00 AM Transaction log backup
Vineri
04:30 PM Transaction log backup
10:30 PM Transaction log backup
Smbt 05:00 AM Differential backup
05:00 AM Differential backup
Duminic
10:30 PM Full backup
Se dorete restaurarea bazei de date n starea de Joi ora 04:30 PM. n acest caz, secvena de restaurare va fi:
Se dorete restaurarea bazei de date n starea de Smbt ora 05:00 AM. Secvena de restaurare va fi:
COPY_ONLY
Opiunea COPY_ONLY are rolul de a nu afecta secvena copiilor de siguran. Spre exemplu, copiile de siguran differential i
transaction log depind de copia de siguran full.
ThingsAnITSpecShouldKnowTSQL49.sql
Pe baza exemplului anterior menionat, s presupunem c Joi ora 01:00 PM este necesar a realiza un full backup asupra bazei de
date Comanda (pentru a avea o copie n mediul de test).
n cazul n care Joi ora 01:00 PM am efectua o copie full a bazei de date fr a specifica op iunea COPY_ONLY, toate celelalte
copii de siguran (Joi ora 04:30 PM Transaction log backup, Joi ora 10:30 PM Transaction log backup, Vineri ora 05:00 AM
Differential backup, etc.) vor depinde de full backup-ul efectuat Joi ora 01:00 PM!!! Deci tergerea copiei de siguran efectuat Joi
ora
01:00
PM
ar
compromite
toate
celelalte
copii
de
siguran
(differential
i
transaction
log).
n schimb, dac Joi ora 01:00 PM am efectua o copie full a bazei de date specificnd opiunea COPY_ONLY, toate celelalte copii
de
siguran
vor
depinde
de
full
backup-ul
efectuat
Duminic
ora
10:30
PM.
Ca i msur de siguran, recomand folosirea opiunii COPY_ONLY, atunci cnd:
nu deinei prea multe informaii referitoare la bazele de date ale unei instane MSSQL;
timpul este prea scurt i nu permite analiza secvenelor copiilor de siguran (tabelele
sistem: msdb.dbo.backupfile, msdb.dbo.backupfilegroup,msdb.dbo.backupmediafamily, msdb.dbo.backupmediaset, msd
b.dbo.backupset);
dorii a avea o copie a bazei de date pe o alt main, dar nu dorii afectarea secvenelor copiilor de siguran;
etc.
STRIPPING BAKCUPS
Presupune mparirea fiierului de backup n mai multe fiiere (scrise n paralel) i ofer un plus de performan n ceea ce privete
copiile de siguran efectuate asupra bazelor de date de mari dimensiuni. Att backup-ul ct i restore-ul trebuie fcut menionnd
toate fiierele ce compun copia de siguran (se accept mprirea pn la maximum 64 de fiiere).
ThingsAnITSpecShouldKnowTSQL50.sql
prin
intermediul
SQL
MSSQL
prin
Authentication
baze
Server
Management
intermediul
de
Studio;
SQLCMD;
Mode;
date;
backup/restore;
crearea/modificarea de obiecte (baze de date, tabele, indexri, etc);
etc.
Instalarea SQL Server Management Studio nu este obligatorie. Muli asociaz interfaa SQL Server Management Studio cu
MSSQL Server (oarecum din cauz c aproape toate operaiile se pot realiza prin intermediul aceleiai interfee), dar trebuie
reinut faptul c Management Studio este un utilitar ce nu este neaprat necesar a fi instalat odat cu rolul de SGBD. De fapt,
acest
utilitar
poate
fi
instalat
chiar
i
n
absena
rolului
de
server
de
baze
de
date.
Tocmai datorit faptului c SQL Server Management Studio este un utilitar destul de intuitiv, nu am s insist prea mult asupra lui
n prezentul articol dorind a m axa mai mult pe managementul unei instane MSSQL din linie de comand, caz n care utilitarul
SQLCMD
este
suficient
(i
n
general
instalat
odat
cu
instana).
n cazul n care utilitarul nu este instalat, SQL Server Management Studio poate fi descrcat (versiunea EXPRESS) de pe site-ul
Microsoft.
Conectarea la instanele MSSQL gzduite de furnizorii de servicii de hosting se poate realiza prin intermediul SQL Server
Management Studio (nu exist motive de ngrijorare n privina securitii conexiunilor via internet n acest sens exist
mecanisme
de
criptare
i
securizare).
Implicit, SQL Management Studio poate fi accesat din Start All Programs Microsoft SQL Server 2008 R2 SQL Management
Studio).
n imaginea anterioar este prezentat modul de autentificare Windows, caz n care sistemul de operare va fi cel care va efectua
verificri asupra identitii celui ce iniiaz conexiunea. Dac ne ntoarcem asupra pailor de instalare efectuai n prima parte a
acestui articol, n etapa Database Engine Configuration am ales opiuneaMixed Mode (SQL Server authentication and Windows
authentication).
Conform configuraiei alese n etapa de instalare, accesul la instana SQLEXPRESS se poate realiza n modul Windows (caz n
care aplicaia trebuie s fie executat sub credeniale contului utilizator pentru care s-a alocat acces explicit n instana MSSQL
WEB01\Administrator).
n imaginea anterioar este prezentat modul de autentificare SQL, caz n care SGBD-ul va fi cel care va face validarea pe baz de
user i parol.
n cazul n care se dorete realizarea unei conexiuni pe baza unui protocol specific, acest lucru se poate realiza prin intermediul
opiunilor
avansate
disponibile
n
cadrul
de
pagin Connection
Properties.
SQL Server Management Studio include o serie de faciliti precum:
intellisense;
statement completion;
etc.
Pentru a putea compara execuia frazelor SQL putei folosi Display Estimated Execution Plan sau Include Actual Execution Plan
(le gsii n meniul Query).
Utilitarul poate fi gsit n directorul unde s-a efectuat instalarea instanei MSSQL (n cazul nostru C:\Program Files\Microsoft SQL
Server\100\Tools\Binn). n cazul n care utilitarul SQLCMD nu este instalat, kitul de instalare poate fi descrcat de pe site-ul
Microsoft (X86 Package, X64 Package, IA64 Package).
Deoarece acest director este inclus n variabila system PATH, apelarea utilitarului SQLCMD se poate face direct din consola
command prompt.
executabilul sqlsrvr.exe a fiecrei instane denumite atunci cnd alocarea porturilor se realizeaz n mod dinamic;
Sintaxa general:
sqlcmd -S tcp:<computer name>,<port number>
Conectarea la o instan denumit, publicat pe portul TCP 49157 folosind autentificarea Windows (n general o astfel de
conectare va fi necesar n cazul n care serviciul SQL Server Browser nu este pornit/publicat i instana MSSQL este publicat pe
un alt port TCP dect cel implicit).
Conectarea la instana implicit folosind autentificarea SQL (pe baza contului sa).
Conectarea via Named Pipes
Atenie, n cazul n care efectuai conectarea remote, trebuie s v asigurai c regulile firewall permit accesul prin reea.
Spre deosebire de TCP/IP, n acest caz trebuie publicat:
Sintaxa general:
sqlcmd -S np:\\<computer name>\<pipe name>
Shared
Memory
nu
putem
efectua
conectare
remote.
Apelarea scripturilor
Nu mi-am propus a discuta aspecte legate de crearea bazelor de date, normalizare, denormalizare, etc. De aceea, ca baz de
date (de test), am s propun apelarea urmtorului script SQL care va genera baza de date Comanda (este o baz de date pe care
o folosesc n cam toate articolele legate de MSSQL tocmai datorit faptului c structura ei este simpl, uor de neles, uor de
memorat, dar mi permite i punerea n discuie a unor cazuri particulare).
comanda.sql
Pentru a facilita citirea i nelegerea prezentului articol, toate comenzile transmise ctre instana MSSQL am s le apelez din
Microsoft SQL Server Management Studio. Dac dorii s punei n practic exemplele articolului curent, v recomand s le apelai
asemeni modului prezentat n imaginea anterioar (cu ajutorul SQLCMD [ -i input_file] [ -o output_file ]).
Cum
putem
reveni
asupra
acestei
setri?
Prin
intermediul
regitrilor!
Fiecare
instan
MSSQL
are
cte
un
set
de
regitrii
definii
n
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft
SQL
Server.
Dac valoarea LoginMode este 0 sau 2, atunci nseamn c respectiva instan MSSQL este configurat n modul Mixed Mode
(SQL Server authentication and Windows authentication). Valoarea 1 este asociat modului de autentificare Windows.
Este
necesar
repornirea
instanei
MSSQL
n
cazul
n
care
valoarea LoginMode este
schimbat.
Mai exact, pe baza exemplului nostru, LoginMode are valoarea 2 (pentru fiecare instan n parte).
Regitrii
instana
denumit.
Aadar, n cazul n care, pentru instana implicit atribui valoarea 1 (Windows authentication), dup repornirea serviciilor MSSQL,
urmtoarele conectri bazate pe autentificarea SQL vor eua.
n cazul n care la momentul instalrii s-a ales opiunea Windows authentication mode, userul sa va fi creat, dar contul nu va fi
activ (deci, nu va fi posibil conectarea la instana MSSQL pe baza acestui user). Aadar, modificarea regitrilor (activarea modului
Mixed Mode) va trebui nsoit de activarea contului sa.
EnableSAAccount.sql
Login:
asociaz
un
cont
utilizator
Windows
sau
un
cont
SQL.
Role: asemntor grupurilor de securitate Windows, rolurile au scopul de a grupa mai multe conturi i de a facilita accesul la
resursele MSSQL.
Server roles:
o bulkadmin: membrii acestui rol vor putea apela BULK INSERT (BULK INSERT operaie prin intermediul creia
pot fi importate date din diverse surse de date. Ex: fiiere .txt, .csv, etc. ).
dbcreator: membrii acestui rol vor putea crea baze de date, efectua modificri sau operaii de restaurare asupra
propriilor baze de date, etc.
diskadmin: membrii acestui rol vor avea drepturile necesare pentru a efectua operaii cu fiiere (ex: crearea /
tergerea unui backup device).
public: orice login va fi membru al acestui grup. Scopul acestui rol este de a uura managementul accesului la
resursele unei instane MSSQL.
securityadmin: membrii acestui rol pot administra login-urile, pot reseta parolele conturilor SQL, pot citi logurile
MSSQL, etc. De reinut faptul c operaiile executate asupra login-urilor cu rol de sysadmin sunt limitate.
serveradmin: membrii acestui rol vor putea schimba parametrii de funcionare a instanei MSSQL.
setupadmin: membrii acestui rol au dreptul de a aduga / elimina linked servers, administra replicrile, precum i
de a executa anumite proceduri stocate n sistem. Linked servers o funcionalitate prin intermediul creia este
posibil interogarea unor surse externe (ex: prin intermediul MSSQL, un set de date din instana curent poate fi
joncionat cu un set de date obinut dintr-o foaie de lucru Excel).
Database roles:
db_accessadmin: membrii acestui rol pot aduga i terge login-urile respectivei baze de date (dar fr
posibilitatea de a asigna permisiuni).
db_backupoperator: membrii acestui rol pot realiza copii de siguran asupra respectivei baze de date (pentru a
putea restaura baze de date, login-ul va trebui s fie membru dbcreator).
db_datareader: membrii acestui rol pot executa fraze SELECT-SQL asupra oricrui tabel sau view din respectiva
baz de date.
db_datawriter: membrii acestui rol pot executa operaii de scriere (adugare/modificare/tergere) asupra oricrui
tabel din respectiva baz de date.
db_ddladmin: membrii acestui rol pot executa comenzi DDL (data definition language) asupra respectivei baze
de date. DDL creare/modificare/tergere: tabel, index, trigger, stored procedure, function, etc.
db_denydatareader: membrii acestui rol nu pot efectua operaii de citire asupra respectivei baze de date.
db_denydatawriter: membrii acestui rol nu pot efectua operaii de scriere (adugare/modificare/tergere) asupra
tabelelor respectivei baze de date.
db_owner: membrii acestui rol au drepturi depline asupra respectivei baze de date.
db_securityadmin: membrii acestui rol pot aduce modificri permisiunilor respectivei baze de date (dar nu pot
aduga/terge login-uri). Atat db_securityadmin ct i db_accessadmin nu au drepturile necesare pentru
managementul apartenenei login-urilor la anumite roluri specifice bazelor de date (pentru aceasta fiind necesare
drepturile db_owner).
Principals:
SQL server principals: login-uri care sunt asociate cu conturile MSSQL (conturile sunt salvate n cadrul instanei MSSQL).
Database principals:
4. Fraza SQL de la punctul 2 poate fi parial nlocuit de procedura stocat sp_helpsrvrolemember - pe baza parametrului
@srvrolename pot fi fcute filtrri.
ThingsAnITSpecShouldKnowTSQL05.sql
DEFAULT_LANGUAGE = us_english;
ThingsAnITSpecShouldKnowTSQL07.sql
sp_dropsrvrolemember.
ThingsAnITSpecShouldKnowTSQL09.sql
10. tergerea unui login. tergei login-ul asociat contului Windows WEB01\iftvio.
DROP LOGIN
ThingsAnITSpecShouldKnowTSQL11.sql
11. Dup ce a fost creat login-ul, acesta poate fi mapat unei baze de date.
S se mapeze login-ul WEB01\iftvio la baza de date Comanda.
CREATE USER
ALTER USER
ThingsAnITSpecShouldKnowTSQL12.sql
12. Userului WEB01\iftvio s i fie alocate drepturi depline asupra bazei de date Comanda.
sp_addrolemember
ThingsAnITSpecShouldKnowTSQL13.sql
Mai multe detalii legate de userii i rolurile de la nivelul bazei de date pot fi obinute prin intermediul procedurilor
stocate sys.database_role_members isys.database_principals.
ThingsAnITSpecShouldKnowTSQL16.sql
14. Pentru baza de date Comanda s se revoce drepturile rolului db_owner pentru userul WEB01\iftvio.
sp_droprolemember
ThingsAnITSpecShouldKnowTSQL17.sql
doar dreptul de citire (selecie) asupra anumitor (CodAgent, NumePrenume, Adresa, Telefon) coloane din tabela Agent;
doar dreptul de citire (selecie) asupra tabelei Client;
dreptul de scriere (inserare, modificare, tergere) i citire (selecie) asupra tabelei LinieComanda;
17. Totui, dac vrem s mai adugm un user (ex: db1) care s aib aceleai permisiuni ca i db, se recomand crearea unui
database role cruia s i atribuim permisiunile anterior menionate (iar userii db i db1 s i facem membrii ai noului database
role).
CREATE
ALTER
DROP ROLE
ThingsAnITSpecShouldKnowTSQL20.sql
ROLE
ROLE
Pentru baza de date Comanda, userul db s fie adugat ca membru al rolului db_nonsensitive.
ThingsAnITSpecShouldKnowTSQL22.sql