Istoric restaurare pentru o anumita baza

Uneori avem nevoie sa aflam istoricul restaurarilor pentru o baza de pe serverul de sql. Pentru aceasta am creat o procedura ce returneaza istoricul de restore pentru o anumita baza ce este primita ca parametru al procedurii.

Procedura returneaza cate o linie pentru fiecare restore efectuat pentru baza primita ca paremtru, iar coloanele returnate sunt:
NumeServer – numele serverului pe care este baza
NumeBaza   – numele bazei pentru care se returneaza istoricul de restore
DataRestaurare – data si ora la care s-a facut restaurarea respectiva
LSN_First – reprezinta log sequence number-ul de la care a pornit restaurarea (poate fi util in anumite situatii)
LSN_First – reprezinta log sequence number-ul la care s-a oprit restaurarea (poate fi util in anumite situatii)
TipRestaurare – daca a fost facuta o restaurare de tip Full, Differential, Log, Filegroup, etc.
[mai mult...]

Ultima executie a unei proceduri

Pentru situatiile cand avem nevoie sa aflam cand a fost rulata ultima data o anumita procedura pe baza de date  am conceput o procedura ce returneaza cea mai recenta data si ora cand procedura cautata a fost rulata pe baza.

Procedura are un parametru @NumeProcedura.
Daca acest parametru are o valoare, atunci procedura returneaza ultima rulare pt procedura specificata in parametru.
Daca parametrul este lasat necompletat, atunci procedura returneaza toate procedurile rulate de la ultimul restart al serverului de sql si, pentru fiecare dintre aceste proceduri, este afisata data si ora ultimei rulari.
[mai mult...]

GGasire triggers pe baza de date

Pentru cazurile in care avem nevoie sa stim ce triggeri sunt definiti pe o anumita baza de date, am facut o procedura ce returneaza toti trigerri definiti pe obiectele unei baze de date, impreuna cu obiectele respective si statusul lor.

 

Coloanele returnate vor fi:

TableName – numele obiectului pe care este definit trigerrul

TriggerName – numele trigerrului

TriggerStatus – statusul trigerrului (care poate sa fie activ sau inactiv)

[mai mult...]

Top proceduri consumatoare de CPU

Pentru situatiile in care serverul de sql merge greu, si nu stim ce anume consuma resursele, am facut o procedura care, rulata pe server, intoarce procedurile de sql ce utilizeaza cel mai mult procesorul.

Procedura va avea un parametru de tip integer, care va spune numarul de proceduri care sa fie returnate (top x)

Coloanele returnate vor fi:

DatabaseName – numele bazei de date pe care este definita procedura

SchemaName – numele schemei aferente procedurii

ObjectName – numele procedurii

LastExecutionTime – ultima oara cand procedura a fost apelata

TotalNumberOfExecution – numarul total de apelari ale procedurii de la ultimul restart al serverului de sql

AverageLogicalReads – numarul mediu de citiri logice efectuate de catre CPU

AverageLogicalWrites – numarul mediu de scrieri logice efectuate

[mai mult...]

Gasire zile weekend pe un interval

Pentru situatiile in care avem nevoie sa stim care sunt zilele de weekend intr-un interval de timp am facut o procedura care face acest lucru pe un interval de timp ales.
Procedura primeste doi parametri:
@begin de tip data
@end de tip data
Procedura verifica pt intervalul cuprins intre @begin si @end (inclusiv capetele de interval) si, daca gaseste, returneaza zilele de weekend.
[mai mult...]

Verificare status backup

Sunt situatii in care un backup, facut printr-un job sau facut de altcineva, dureaza mult (sau mai mult decat suntem obisnuiti) si vrem sa vedem care e starea lui: daca s-a blocat sau nu, si cat mai are pana cand se termina.

 Pentru o astfel de situatie am facut o procedura care, rulata pe un server de sql, returneaza toate backupurile ce sunt in progres si pentru fiecare backup de baza de date, returneaza urmatoarele coloane:
 – DatabaseName = numele bazei de date pt care este un backup in progres
– PercentCompleted = procentul deja facut din backup
– SQLCommand = textul comenzii de backup (aici se poate vedea si calea sau device-ul in care se face backup-ul)
[mai mult...]

Calcul\desfasurator dobanda

 Mai jos am creat o procedura ce calculeaza si afiseaza un desfasurator de dobanda bancara.
Procedura are urmatorii parametri:
@SumaLunara – suma lunara pe care ne propunem sa o depunem in fiecare luna in contdepozitplan de acumulare
@NrAni – numarul de ani pentru care dorim sa facem simularea
@ProcentDobanda – procentul de dobanda anuala (de forma 5 daca e 5%, 2.5 daca e 2.5%, etc)
@CapitalizareAnual – se pune 1 daca dobanda se capitalizeaza doar la sfarsitul anului sau se lasa 0 daca dobanda se capitalizeaza lunar
Procedura va afisa urmatoarele coloane:
Anul – anul pt care se face simularea
SoldulInitial – soldul de la inceputul anului
Luna1 – suma depusa + dobanda la sfarsitul primei luni (daca este capitalizare lunara) sau suma depusa (daca este capitalizare anuala). (se pleaca de la premiza ca depunerea de suma se face in prima zi a fiecarei luni)
Luna2  pana la Luna12 – similar cu Luna1
Economie – totalul sumelor depuse pe anul respectiv
Dobanda – dobanda primita in anul respectiv
SoldFinal – soldul la sfarsitul anului respectiv
[mai mult...]

Verificare Check_Policy pt logins

Sunt situatii in care auditorii interni sau externi au nevoie de login-urile de pe serverele de sql ce nu au pusa bifa la CHECK_POLICY. Sau ne dorim noi sa stim care sunt login-urile in aceasta situatie, pentru a nu avea probleme la audit.
CHECK_POLICY este o proprietate prin care credentilalele de sql trebuie sa respecte politica de credentiale din domeniul de windows in care apartine serverul de sql, si este un lucru ce este verificat constant de audit-urile ce vin periodic in firme.
Pentru a gasi aceste login-uri am facut o procedura ce verifica daca login-urile de pe serverul de sql pe care este rulata au bifata proprietatea CHECK POLICY si retuneaza toate login-urile ce nu au aceasta proprietate activata.
Procedura nu are parametri, se creaza si se ruleaza pe serverul de sql dorit si intoarce toti acei logini ce nu sunt conformi cu politica de parole din domeniu.
[mai mult...]

Gasire useri db_owner

M-am lovit des de situatia in care audit-ul mi-a cerut un raport cu userii ce au drept de db_owner pe una sau mai multe baze din serverul de SQL.
Pentru aceasta am facut procedura care  poate sa fie pusa pe orice baza  , si care, la rulare,
verifica fiecare baza de pe server si , pt fiecare baza in parte, intoarce userii care au drept de db_owner pe acea baza (acestia sunt userii care pot face ORICE pe acea baza si la care persoanele care fac audit cer explicatii pt aceste drepturi)
Coloanele pe care le intoarce procedura sunt:
– numele serverului (am pus si numele serverului pt ca, in general, persoana care auditeaza vrea raportul in format excel si aceasta coloana este de folos atunci cand sunt mai multe servere)
– numele bazei pe care userul are drept de db_owner
– numele userului care are drept de db_owner
– tipul userului (de sql sau de windows)
[mai mult...]

Afisare joburi cu erori

In cazul in care avem un server de sql pe care ruleaza foarte multe joburi, ne este necesar un raport rapid cu joburile care, din diverse motive, au dat eroare.

 Pentru aceasta am creat o procedura care poate fi creata pe orice baza a serverului (dar de preferat e o baza de sistem sau una de monitorizare) si, la rulare, afiseaza, in ordine descendenta a datei, toate joburile de sql de pe server care , la rulare, au dat eroare.
Si pt fiecare dintre aceste joburi procedura afiseaza:
– numele jobului
– numele pasului (aferent jobului) in care a fost eroarea (pt ca jobul poate avea mai multi pasi si doar unul sau unii pot da eroare)
– severitatea erorii ( este un cod care pt cei avansati poate fi de ajutor)
– mesajul erorii (ajuta la depanarea ei)
– data rularii jobului
[mai mult...]