Sunteți pe pagina 1din 61

Cui se adreseaz acest articol?

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;

configurarea firewall-ului astfel nct s permitei accesul remote la instana MSSQL;

conectarea la o instan MSSQL;

managementul accesului;

managementul permisiunilor;

listarea bazelor de date;

ataarea unei baze de date la o instan MSSQL;

verificarea integritii unei baze date;

reindexarea;

backup & restore, etc;

configurarea instanei MSSQL - memorie, priority boost, etc.

(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:

Ce este un SGBD? (seciune dedicat nceptorilor);


MSSQL Server (prima parte - seciune dedicat nceptorilor);

Efectiv o baz de date poate fi compus din mai multe fiiere;

Protocoale;

Porturi;

T-SQL (Transact-SQL);

Servicii MSSQL;

Ediii MSSQL 2008;

Maximum Capacity Specifications for SQL Server 2008;

Instrumente necesare;

Descrcarea kit-urilor de instalare;

Instalarea Microsoft SQL Server 2008 R2 Express Edition;

MSSQL Server (partea a doua - seciune dedicat nceptorilor);

Publicarea instanelor MSSQL;

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.

prima form de normalizare presupune eliminarea cmpurilor compuse i pe cele repetitive;


a doua form de normalizare presupune eliminarea dependenelor funcionale pariale;

a treia form de normalizare presupune eliminarea dependenelor funcionale tranzitive;

a patra form presupune eliminarea dependenelor multivaloare;

a cincea form elimin dependenele de jonciune.

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:

creea baze de date i tabele;


realiza indeci;

stabili relaii ntre tabele;

extrage i modifica date;

etc.

MSSQL
(seciune dedicat nceptorilor)

Server

(prima

Microsoft SQL Server este sistemul de gestiune


Pe
o
main
fizic
putem
O instan MSSQL poate gzdui mai multe baze de date.
Efectiv
o
Fiiere cu extensia:

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:

pentru fiecare instan n parte s alocm porturi statice;


s lsm MSSQL s aloce porturi n mod dinamic (asta nseamn c portul instanei MSSQL s fie alocat la fiecare
repornire a instanei deci nu putem garanta c de fiecare dat va fi alocat acelai port TCP);

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;

Full Text Search Service;

(n cadrul acestui articol am s discut doar despre rolul de SGBD)


Ediii
MSSQL
http://www.microsoft.com/sqlserver/2008/en/us/editions.aspx

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;

4 GB storage / per baz de date (exceptnd fiierele log);

(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.

Descrcarea kit-urilor de instalare

Microsoft SQL Server 2008 R2 RTM - Express;


Microsoft SQL Server 2008 R2 RTM - Management Studio Express;

Microsoft SQL Server 2008 Command Line Utilities

X86 Package;

X64 Package;

IA64 Package;

Microsoft SQL Server 2008 R2 RTM - Express with Management Tools;

Microsoft SQL Server2008 R2 RTM - Express with Advanced Services;

Instalarea Microsoft SQL Server 2008 R2 Express Edition


(Doar pentru a completa anumite posibile scenarii, n acest articol am s instalez dou instane MSSQL ambele n ediie
EXPRESS. n cazul primei instane MSSQL am s urmez paii implicii ai wizard-ului, iar instana va fi una denumit
WEB01\SQLEXPRESS. n cazul celei de-a doua instane MSSQL, n etapa de instalare am s configurez instana ca fiind instan
implicit - WEB01. n prezentul articol WEB01 este denumirea NETBIOS a mainii pe care se efectueaz instalarea. Instalarea se
va efectua pe baza kitului de instalare Microsoft SQL Server 2008 R2 RTM - Express with Management Tools)
Instalarea Microsoft SQL Server 2008 R2 necesit existena:

Microsoft .NET Framwework 3.5 SP1;


Microsoft Windows Installer 4.5;

Microsoft Windows PowerShell;

Instalarea instanei denumite - WEB01\SQLEXPRESS

n prezentul articol voi discuta doar despre rolul de SGBD, aadar n etapa de instalare am selectat doar componentele strict
necesare:

Database Engine Services;


Management Tools Basic;

SQL Client Conectivity SDK;

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:

acest mod de autentificare se folosete de protocolul Kerberos (proces de autentificare securizat);


pe baza unui singur cont utilizator poate fi alocat accesul la diferite resurse (de asemeni, blocarea acelui cont utilizator va
presupune i blocarea accesului la toate resursele unde s-a alocat acces);

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.

SQL Server authentication mode, presupune:

ca autentificarea s fie realizat de ctre instana MSSQL;


pstrarea userului i parolei de acces n cadrul instanei MSSQL (deci nu exist nici o legtur ntre conturile Windows i
userii MSSQL);

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:

locaia pe disc unde va fi instalat instana MSSQL;


directoarele implicite ce vor gzdui bazele de date;

locaia implicit de gzduire a backup-urilor;

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)

Instalarea instanei implicite - WEB01


(Efectuez instalarea acestei instane doar pentru a completa anumite posibile scenarii. n mod normal o singur instan MSSQL
este suficient n etapa de dezvoltare / distribuire software.)

MSSQL
Server
(seciune dedicat nceptorilor)

(partea

SQL Server Configuration Manager


SQL Server Configuration Manager este un snap-in MMC (Microsoft Management Console) ce permite:

administrarea serviciilor asociate instanelor MSSQL;


configurarea protocoalelor;

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.

Execuia activitilor de mentenan poate fi programat n funcie de anumii declanatori:

pornirea agentului;

atunci cnd procentul de utilizarea al procesorului este sczut;

la intervale regulate de timp;

etc.

Activiti de mentenan:

backup;

verificarea integritii bazelor de date;

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 (MSSQLSERVER) acest serviciu este asociat instanei implicite.


SQL Server Agent (MSSQLSERVER) agentul MSSQL asociat instanei implicite.

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;

nu exist ALIAS-uri definite.

Publicarea instanelor MSSQL


Mai exact, pentru fiecare instan am s activez i protocoalele Named Pipes & TCP/IP.
Activarea Named Pipes

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).

Aplicarea noilor configurri presupune repornirea instanelor MSSQL.

Configurarea i pornirea SQL Server Browser

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.

Configurarea Windows Firewall

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.

Publicarea instanei implicite


Instana implicit este publicat pe portul TCP 1433. n consecin va fi realizat o regul care s permit accesul pe portul
acesteia.

Publicarea instanei denumite


Instana denumit este configurat a aloca portul TCP n mod dinamic, deci nu ne va fi garantat faptul c de fiecare dat va fi
alocat acelai port TCP. n consecin, de aceast dat, regula va fi definit pe baza executabilului instanei
WEB01\SQLEXPRESS.

final,

toate

regulile

definite

trebuiesc

activate.

S clarificm ce anume face SQL Server Browser


Cu ajutorul SQL Server Management Studio Express, de pe o staie client din reea, am s efectuez conectarea la instana
SQLEXPRESS (instan denumit) gzduit pe serverul WEB01. Pentru a evidenia comportamentul SQL Server Browser, pe
serverul WEB01 am pornit o captur trafic reea, unde:

WEB01 192.168.5.2 (serverul ce gzduiete instanele MSSQL);


W701 192.168.5.1 (staia client de pe care se realizeaz conectarea la instana WEB01\SQLEXPRESS).

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.

Listarea pricipalilor parametri ai instanei MSSQL


Listarea bazelor de date

3.

Listarea fiierelor bazelor de date

4.

Listarea tabelelor

5.

Listarea coloanelor

6.

Listarea indecilor

7.

Listarea declanatorilor (eng. triggers)

8.

Listarea procedurilor stocate

9.

Listarea funciilor

10. tergerea bazelor de date


11. Ataarea / deconectarea unei baze de date
12. Verificarea integritii unei baze de date
13. Reindexarea i defragmentarea indecilor
14. Digg and favorite queries
15. Backup & restore
Listarea pricipalilor parametri ai instanei MSSQL
Listarea
principalilor
parametri
ai
unei
intermediul sys.servers, sp_server_info,sys.configurations.
Pe
baza
valorilor
acestor
parametri
ThingsAnITSpecShouldKnowTSQL23.sql

putem

instane

MSSQL

nelegem

poate

configuraia

fi

efectuat

instanei

prin

MSSQL.

Listarea bazelor de date


Prin
intermediul sp_databases i sys.databases putem
vizualiza
bazele
de
date
gzduite
de
o
instan
MSSQL. sp_databases i sys.databases sunt eseniale unui IT specialist atunci cnd managementul unei instane MSSQL se face
n
lipsa
SQL
Server
Management
Studio.
ThingsAnITSpecShouldKnowTSQL24.sql

Listarea fiierelor bazelor de date


n prima parte a acestui articol am menionat c o baz de date este compus din mai multe fiiere . Prin
intermediul sys.master_files i sys.database_files sunt returnate serii de date referitoare la fiierele bazelor de date.
ThingsAnITSpecShouldKnowTSQL25.sql

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.

Listarea declanatorilor (eng. triggers)


Ce sunt triggeri (declanatorii)?
Listarea
declanatorilor
precum
i
alte
intermediul sys.triggers, sys.trigger_events, sys.sql_modules.
ThingsAnITSpecShouldKnowTSQL29.sql

Listarea procedurilor stocate


Ce sunt procedurile stocate?

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

tergerea bazelor de date


DROP DATABASE
Pentru a putea efectua tergerea unei baze de date, trebuiesc nchise toate conexiunile deschise cu respectiva baz de date.
n producie v putei folosi de ThingsAnITSpecShouldKnowTSQL32.sql (atribuii variabilei @DatabaseToBeDeleted denumirea
bazei
de
date
ce
se
dorete
a
fi
tears).
ThingsAnITSpecShouldKnowTSQL32.sql

Ataarea / deconectarea unei baze de date


sp_detach_db
Sunt situaii cnd se dorete deconectarea unei baze de date de la o instan MSSQL (spre deosebire de operaiunea de tergere,
fiierele bazei de date vor rmne stocate pe disc). Pentru a putea efectua deconectarea unei baze de date trebuiesc nchise toate
conexiunile
cu
respectiva
baz
de
date.
n producie v putei folosi de ThingsAnITSpecShouldKnowTSQL33.sql (atribuii variabilei @DatabaseToBeDetached denumirea
bazei de date ce se dorete a fi deconectat de la instana MSSQL).

CREATE DATABASE
Ataarea
unei
baze
de
date
ThingsAnITSpecShouldKnowTSQL34.sql

se

poate

realiza

prin

intermediul CREATE

DATABASE.

Verificarea integritii unei baze de date


Sunt rare cazurile n care apar probleme legate de integritatea bazelor de date MSSQL. Microsoft recomand ca n astfel de cazuri
s se efectueze o restaurare a bazei date. DBCC CHECKDB este recomandat a fi folosit ca ultim soluie n cazul n care se
dorete
repararea
bazei
de
date.
Simpla apelare a lui DBCC CHECKDB presupune doar o verificare a integritii bazei de date (informaia relevant poate fi gsit
pe ultima linie din raportul generat). n cazul n care se dorete repararea bazei de date, acest lucru poate fi fcut prin
apelarea DBCC CHECKDB cu una din opiunile REPAIR_ALLOW_DATA_LOSS | REPAIR_FAST | REPAIR_REBUILD (n prealabil
baza
de
date
trebuie
trecut
n
modul
single-user).
ThingsAnITSpecShouldKnowTSQL35.sql

Reindexarea i defragmentarea indecilor


Indecii sunt obiecte ale bazelor de date ale cror scop este acela de a facilita accesul rapid la date. Fragmentarea indecilor este
ntlnit atunci cnd sunt aduse modificri repetate asupra datelor. n cazul n care un index este fragmentat, timpii de interogare i
consumul de resurse ncep s creasc. Tocmai de aceea, se recomand ca la intervale regulate de timp (n func ie de modul n
care o baz de date este exploatat) s se efectueze reindexarea sau defragmentarea a indecilor.
n cazul reindexrii, indexul va fi recreat. Acest lucru va determina (doar pe parcursul operaiunii de reindexare) ca interogrile s
nu se poat folosi de indexul respectiv (limitare ce poate fi evitat n cazul ediiilor Developer i Enterprise).
n cazul defragmentrii, reorganizarea indexului are loc fr ca aceasta s fie recreat, deci interogrile (efectuate pe parcursul
operaiunii de defragmentare) vor fi foarte puin afectate. Spre deosebire de reindexare, procesul de defragmentare este mai lent.
Vizualizarea
fragmentrii
indecilor
ThingsAnITSpecShouldKnowTSQL36.sql

se

poate

realiza

prin

intermediul

urmtoarei

fraze

SELECT-SQL

ALTER INDEX REBUILD


Reindexarea
ThingsAnITSpecShouldKnowTSQL37.sql

unui

index.

ALTER INDEX REORGANIZE


Defragmentarea
ThingsAnITSpecShouldKnowTSQL38.sql

unui

index.

Digg and favorite queries


ThingsAnITSpecShouldKnowTSQL39.sql
n ThingsAnITSpecShouldKnowTSQL39.sql am trecut o parte din comenzile folosite la conectarea cu o instan MSSQL care
doresc
a
o
supune
analizei.
Backup & restore
Realizarea copiilor de siguran, precum i restaurarea bazelor de date sunt operaiuni obligatorii atunci cnd vorbim de SGBD-uri
(eng. DBMS). n prezena SQL Server Management Studio, aceste operaiuni se pot realiza foarte uor. Totu i, sunt situa ii cnd
acest
lucru
se
poate
realiza
doar
n
linie
de
comand.
Un exemplu ar fi automatizarea procesului de backup / restore n cazul unei ediii EXPRESS. Aa cum am men ionat i n prima
parte a Things an IT specialist should know about MSSQL, serviciul windows SQL Server Agent este instalat odat cu instana
MSSQL (principalul su scop fiind acela de a executa diverse activiti de mentenan), dar n cazul ediiilor EXPRESS, din cauza
limitrilor
impuse,
acest
serviciu
nu
poate
fi
pornit.
Alternativa la SQL Server Agent ar fi utilizarea scheduled task-urilor, dar presupune cunoaterea comenzilor T-SQL.
Realizarea copiilor de siguran, sau restaurarea bazelor de date presupune implicit existena unei strategii backup & restore. Nu
mi propun a discuta acest subiect n acest post, dar am s menionez cteva aspecte importante ce trebuiesc luate n calcul
atunci cnd o astfel de strategie este creat:

Identificai bazele de date pentru care trebuiesc realizate copii de siguran.


Stabilii frecvena cu care copiile de siguran trebuie realizate. De obicei rspunsul l obinem pe baza ntrebrilor "Ct
eti dispus s pierzi? Esti dispus s pierzi datele bazei de date de acum X minute? Dar de acum X ore / zile?".
Datele unei baze de date sunt rezultatul unor intrri: ex: operatorul unei aplicaii de contabilitate, un proces automatizat de
monitorizare i control a produciei, etc. Aceste intrri n baza de date au un cost (un echivalent n bani). n cazul
pierderilor de date din baza de date, aceste costuri pot fi calculate: costurile salariale ale contabilului / interval de timp,
costurile suferite cu reverificarea produciei / interval de timp, eventual chiar i pierderile suferite din cauza opririi
procesului de producie pe perioada verificrilor, etc.

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 o metod de restricionare a accesului la copiile de siguran.

Stabilii intervalul de timp pentru care copiile de siguran trebuiesc pstrate / arhivate.

Stabilii modul de realizare a proceselor de backup / restore. Procesele vor fi automatizate?

Stabilii o modalitate de verificare a proceselor de backup / restore.

La perioade de timp regulate, reverificai procedurile de backup & restore. n mediul de test testai corectitudinea lor.

etc.

Tipuri de backup MSSQL:

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:

restore pe baza backup-ului de Duminic ora 10:30 PM (full);


restore pe baza backup-ului de Joi ora 05:00 AM (differential);

restore pe baza backup-ului de Joi ora 11:00 AM (transaction log);

restore pe baza backup-ului de Joi ora 04:30 PM (transaction log);

Se dorete restaurarea bazei de date n starea de Smbt ora 05:00 AM. Secvena de restaurare va fi:

restore pe baza backup-ului de Duminic ora 10:30 PM (full);


restore pe baza backup-ului de Smbt ora 05:00 AM (differential);

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

II. Things an IT specialist should know about MSSQL Server


1. conectarea
la
MSSQL
2. conectarea
la
3. configurarea
4. selectarea
unei
5. principals and permissions;

prin
intermediul
SQL
MSSQL
prin
Authentication
baze

Server
Management
intermediul
de

Studio;
SQLCMD;
Mode;
date;

Conectarea la MSSQL prin intermediul SQL Server Management Studio


Aa cum am menionat i n prima parte, SQL Server Management Studio este un instrument de administrare al bazelor de date
SQL Server ce permite prin intermediul unei singure interfee efectuarea de operaiuni precum:

backup/restore;
crearea/modificarea de obiecte (baze de date, tabele, indexri, etc);

scrierea/modificarea/executarea de fraze SQL;

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;

vizualizarea rapoartelor privind modul de execuie a unei comenzi DML;

etc.

Pentru a putea compara execuia frazelor SQL putei folosi Display Estimated Execution Plan sau Include Actual Execution Plan
(le gsii n meniul Query).

Conectarea la MSSQL prin intermediul SQLCMD

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.

Conectarea via TCP/IP


Atenie, n cazul n care efectuai conectarea remote, trebuie s v asigurai c regulile firewall permit accesul prin reea. Dac e
s rezumm cazurile cele mai des ntlnite, trebuie publicat:

TCP 1433 instanele implicite sunt configurate a folosi TCP 1433;


UDP 1434 (SQL Server Browser) pentru a rspunde cererilor de identificare a instanelor MSSQL;

executabilul sqlsrvr.exe a fiecrei instane denumite atunci cnd alocarea porturilor se realizeaz n mod dinamic;

NB-Name-In & Pub-WSD-In pentru rezoluii NETBIOS;

Sintaxa general:
sqlcmd -S tcp:<computer name>,<port number>

Exemple de conectare via TCP/IP.

Conectarea la instana implicit folosind autentificarea Windows.

Conectarea la o instan denumit folosind autentificarea Windows.

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:

NB-Name-In & Pub-WSD-In pentru rezoluii NETBIOS;


File and Printer Sharing (SMB-In) TCP 445;

Sintaxa general:
sqlcmd -S np:\\<computer name>\<pipe name>

De unde lum <pipe name>?


Pipe name-ul poate fi obinut n mai multe moduri, dar cel mai sigur e s l obinei din configuraia protocolului.

Exemple de conectare via Named Pipes.

Conectarea la instana implicit folosind autentificarea Windows.

Conectarea la instana denumit SQLEXPRESS folosind autentificarea SQL.


Conectarea via Shared Memory
n
cazul
Sintaxa general:

Shared

Memory

nu

putem

efectua

conectare

remote.

sqlcmd -S lpc:<computer name>


Exemple de conectare via Shared Memory.

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 ]).

Diagrama bazei de date Comanda.

Configurarea Authentication Mode


La momentul instalrii instanelor MSSQL, n etapa Database Engine Configuration am ales opiunea Mixed Mode (SQL Server
authentication and Windows authentication).

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 implicit.

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

Selectarea unei baze de date


Selectarea unei baze de date se face prin intermediul comenzii USE.
ThingsAnITSpecShouldKnowTSQL01.sql

Principals and permissions


n terminologia MSSQL:

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).

processadmin: membrii acestui rol au posibilitatea de a vizualiza i ntrerupe procesele MSSQL.

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).

sysadmin: membrii acestui rol au drepturi depline asupra instanei MSSQL.

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).

public: orice database-level login va fi membru al acestui grup.

Principals:

Windows principals: login-uri care sunt asociate cu:


o windows domain user accounts;

windows local user accounts;

windows domain groups;

windows local groups;

SQL server principals: login-uri care sunt asociate cu conturile MSSQL (conturile sunt salvate n cadrul instanei MSSQL).

Database principals:

Database users: database-level login.

Database roles: rolurile menionate anterior (db_accessadmin, db_backupoperator, db_datareader,


db_datawriter, db_ddladmin, db_denydatareader, db_denydatawriter, db_owner, db_securityadmin, public);

List logins and server roles


1. sys.server_principals
ThingsAnITSpecShouldKnowTSQL02.sql

2. Pentru a obine un rezultat mai complet, eu prefer urmtoarea fraz SELECT-SQL.


ThingsAnITSpecShouldKnowTSQL03.sql

3. Listarea rolurilor se poate face i pe baza procedurii stocate sp_helpsrvrole.


ThingsAnITSpecShouldKnowTSQL04.sql

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

5. Crearea unui login.


CREATE LOGIN
S se creeze un login care s asocieze un cont Windows (atenie contul Windows WEB01\iftvio trebuie s existe nainte de a fi
creat login-ul).
ThingsAnITSpecShouldKnowTSQL06.sql

6. S se creeze un login care s asocieze un cont SQL:

a crui baz de date implicit s fie baza de date COMANDA;


cu schimbare parol la prima autentificare;

DEFAULT_LANGUAGE = us_english;

aplicare politicii de securitate referitoare la schimbarea parolei, complexitate, etc.;

ThingsAnITSpecShouldKnowTSQL07.sql

7. Login-ul db s fie fcut membru al rolului sysadmin.


sp_addsrvrolemember.
ThingsAnITSpecShouldKnowTSQL08.sql

8. Revocai rolul sysadmin pentru login-ul db.

sp_dropsrvrolemember.
ThingsAnITSpecShouldKnowTSQL09.sql

9. Modificarea unui login. Dezactivai login-ul asociat contului Windows WEB01\iftvio.


ALTER LOGIN
ThingsAnITSpecShouldKnowTSQL10.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

13. Vizualizarea rolurilor (database-roles) alocate userului WEB01\iftvio.


sp_helpuser
ThingsAnITSpecShouldKnowTSQL14.sql

Vizualizarea database roles.


sp_helprole
ThingsAnITSpecShouldKnowTSQL15.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

15. S se tearg userul WEB01\iftvio din baza de date Comanda.


DROP USER
ThingsAnITSpecShouldKnowTSQL18.sql

16. Alocarea permisiunilor.


S se adauge userul db pentru baza de date Comanda. Userului db s i fie alocat:

doar dreptul de citire (selecie) asupra anumitor (CodAgent, NumePrenume, Adresa, Telefon) coloane din tabela Agent;
doar dreptul de citire (selecie) asupra tabelei Client;

doar dreptul de citire (selecie) asupra tabelei Comanda;

dreptul de scriere (inserare, modificare, tergere) i citire (selecie) asupra tabelei LinieComanda;

doar dreptul de scriere (selecie) asupra tabelei Produs;

La final s se listeze permisiunile alocate userului db.


GRANT
DENY
REVOKE
sp_helprotect
ThingsAnITSpecShouldKnowTSQL19.sql

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

Revocm permisiunile acordate anterior userului db.


REVOKE
ThingsAnITSpecShouldKnowTSQL21.sql

Pentru baza de date Comanda, userul db s fie adugat ca membru al rolului db_nonsensitive.
ThingsAnITSpecShouldKnowTSQL22.sql

S-ar putea să vă placă și