Documente Academic
Documente Profesional
Documente Cultură
Grupa:202
ANUL DE STUDII II
ANUL UNIVERSITAR 2018-2019
Capitolul I
Prezentarea organizaţiei unde studentul a efectuat practica
Capitolul II
Prezentarea compartimentului din organizaţie unde studentul a efectuat practica
Capitolul III
Descrierea activităţii sau activităților desfășurate în timpul practicii,
Microsoft SQL Server este un sistem de gestionare de baze de date relaționale (RDBMS) produs
de compania americană Microsoft Corp. Limbajul de interogare este SQL iar extensia procedurală
este T-SQL.
Microsoft SQL Server folosește o variantă de SQL numită T-SQL, sau Transact-SQL, o
implementare de SQL-92 (standardul ISO pentru SQL) cu unele extensii. T-SQL în principal
adaugă sintaxă adițională pentru procedurile stocate și pentru tranzacții. Standardele SQL necesită
ACID; acesta este un acronim pentru cele 4 condiții ce trebuie îndeplinite de orice tranzacție:
atomicitate, consistență, izolare, durabilitate. MS SQL Server suportă ODBC (Open Database
Connectivity).
Stocarea datelor se face pe modelul relațional, sub forma unei colecții de tabele cu rânduri și
coloane. Fiecare coloană este de un anumit tip: SQL Server suportă atât tipurile primare, precum
întreg, zecimal, caracter, dată calendaristică, dar și tipuri mai complexe precum text, date binare,
date geometrice, date spațiale, XML, etc.
2. Accesăm tabul Installation:
3. Alegem prima opțiune din meniul apărut : New SQL Server stand-alone installation or add features
to an existing installation.
7. La acest pas se vor căuta update-uri online și se vor instala dacă dorim acest lucru. Apăsăm Next:
8. Așeptăm finalizarea procesului de instalare a update-urilor:
-Management Tools
Selectăm Default Instance dacă dorim o singură instanță de SQL Server și Named Instance dacă dorim
mai multe instanțe. Acestea vor fi diferențiate prin denumire.
La acest pas este verificată disponibilitatea spațiului pe disc. Apăsăm Next:
La acest pas este necesar să specificăm userii folosiți de serviciile serverului de SQL.
Putem lăsa userii configurați Default, dar este recomandat să utilizăm useri diferiți pentru fiecare serviciu.
Pot fi useri locali, existenți pe server, sau useri de domeniu.
-alegem Windows authentication daca dorim să folosim doar useri configurați local pe server, sau useri
de domeniu
-alegem Mixed Mode dacă dorim să folosim useri locali / domeniu și în același timp să putem utiliza și
useri configurați în serverul de SQL
Tot la acest pas este nevoie sa alegem userii ce vor fii administratorii serverului:
-selectăm Add Curent User pentru a adăuga userul cu care suntem logați în acest moment, ca
administrator
Apăsăm Next:
După finalizarea procesului de verificare apăsăm Next:
La acest pas putem reverifica toate opțiunile de configurare alese până acum. Dacă totul este în regulă,
apăsăm Install:
Asteptăm finalizarea instalării. Acest proces durează mai mult decât celelalte de până acum.
Un eveniment autogrowth este procesul prin care motorul SQL Server extinde dimensiunea unui
fișier bază de date atunci când nu mai are spațiu. Marimea cu care un fișier bază de date crește se bazează
pe setările pe care le au pentru opțiunile de creștere fișierele bazelor de date.
.mdf – întâlnite şi sub denumirea de primary files sau main files. Acest fişier găzduieşte obiectele
unei baze de date (tabele, proceduri stocate, view-uri, etc.). O bază de date poate să aibă maximum
un fişier .mdf.
.ndf – secondary database file. În principal .ndf-ul este folosit în cazul optimizărilor. Spre
exemplu: anumite tabele pot fi salvate în fişiere .ndf, fişiere ce vor fi găzduite în locaţii diferite, pe
discuri diferite. O bază de date poate avea zero sau mai multe fişiere .ndf.
.ldf – transaction log files – acest fişier va păstra un istoric al operaţiunilor efectuate asupra datelor
bazei de date.
USE master;
GO
create DATABASE testu;
GO
-- Verify the database files and sizes
SELECT name, size, size*1.0/128 AS [Size in MBs]
FROM sys.master_files
WHERE name = N'testu';
GO
USE master;
GO
CREATE DATABASE Test
ON
( NAME = test_dat,
FILENAME = 'e:\SQL_DATA\test.mdf',
SIZE = 10,
MAXSIZE = 50,
FILEGROWTH = 5 )
LOG ON
( NAME = testlog,
FILENAME = 'e:\SQL_DATA\test.ldf',
SIZE = 5MB,
MAXSIZE = 25MB,
FILEGROWTH = 5MB ) ;
GO
3. Crearea unei baze de date prin specificarea mai multor fișiere de date și fișierele de log de
date
Următorul exemplu creează o baza de date care are trei fișiere de date de 100 MB și două fișiere de
log de 100 MB. Extensiile utilizate pentru fișiere: MDF este utilizat pentru fișierele de date primare, NDF
este utilizat pentru fișierele de date secundare, și LDF este utilizat pentru fișierele de log.
Fișiere de date secundare sunt opționale, sunt definite de utilizator. Fișiere secundare pot fi folosite
pentru a grupa datele pe mai multe discuri si pentru a pune fiecare fișier pe o altă unitate de disc. În plus,
dacă o bază de date depășește dimensiunea maximă pentru un singur fișier pentru Windows, puteți utiliza
fișiere de date secundare, astfel încât baza de date să poată continua să crească.
De exemplu, trei fișiere, Data1.ndf, Data2.ndf, și Data3.ndf, pot fi create pe trei unități de disc, și
repartizat la un singur filegroup ‚fgroup1’. Un tabel poate fi creat în mod special pe filegroup ‚fgroup1’.
USE master;
GO
CREATE DATABASE Test1
ON
PRIMARY
(NAME = Test1,
FILENAME = 'e:\SQL_DATA\test1.mdf',
SIZE = 100MB,
MAXSIZE = 200,
FILEGROWTH = 20),
( NAME = test11,
FILENAME = 'e:\SQL_DATA\test11.ndf',
SIZE = 100MB,
MAXSIZE = 200,
FILEGROWTH = 20),
( NAME = test12,
FILENAME = 'e:\SQL_Data\test12.ndf',
SIZE = 100MB,
MAXSIZE = 200,
FILEGROWTH = 20)
LOG ON
(NAME = test1log1,
FILENAME = 'e:\SQL_Data\test1log1.ldf',
SIZE = 100MB,
MAXSIZE = 200,
FILEGROWTH = 20),
(NAME = test1log2,
FILENAME = 'e:\SQL_Data\test1log12.ldf',
SIZE = 100MB,
MAXSIZE = 200,
FILEGROWTH = 20) ;
GO
Acest exemplu crează fișierele de date și fișierele de log pe discuri diferite pentru a îmbunătăți
performanța
USE master
GO
CREATE DATABASE TEST2
ON PRIMARY
( NAME = SPtest2_dat,
FILENAME = 'e:\SQL_Data\test2dat.mdf',
SIZE = 10,
MAXSIZE = 50,
FILEGROWTH = 15% ),
( NAME = test2_dat,
FILENAME = 'e:\SQL_Data\test2dt.ndf',
SIZE = 10,
MAXSIZE = 50,
FILEGROWTH = 15% ),
FILEGROUP Test2Group1
( NAME = SGtest2Fi1_dat,
FILENAME = 'e:\SQL_Data\SGtest2dt.ndf',
SIZE = 10,
MAXSIZE = 50,
FILEGROWTH = 5 ),
( NAME = SGtest2Fi2_dat,
FILENAME = 'e:\SQL_Data\SG1test2dt.ndf',
SIZE = 10,
MAXSIZE = 50,
FILEGROWTH = 5 ),
FILEGROUP TEST2group2
( NAME = SGtest2Fi3_dat,
FILENAME = 'e:\SQL_Data\test2Fi1dt.ndf',
SIZE = 10,
MAXSIZE = 50,
FILEGROWTH = 5 ),
( NAME = SGtest2Fi4_dat,
FILENAME = 'e:\SQL_Data\test2Fi2dt.ndf',
SIZE = 10,
MAXSIZE = 50,
FILEGROWTH = 5 )
LOG ON
( NAME = test2_log,
FILENAME = 'd:\SQL_Data\test2log.ldf',
SIZE = 5MB,
MAXSIZE = 25MB,
FILEGROWTH = 5MB ) ;
GO
5. Atașarea unei baze de date
USE master;
GO
sp_detach_db TEST;
GO
CREATE DATABASE TEST
ON (FILENAME = 'E:\SQL_DATA\test.mdf')
FOR ATTACH ;
GO
Se crează o bază de date snapshot care poate fi doar citită, nu poate fi atașat un fișier de log de date.
O astfel de bază de date creează o imagine instantanee, statică a unei baze de date utilizator (nu este
baza de sistem).
Inițial sistemul construieste un schelet gol (un fisier “sparse”) care face trimitere la paginile de date
originale; pe masură ce paginile bazei de date se modifica , ca urmare a unui update pe un tabel ,de
exemplu, acestea se copiază în fișierul ‘sparse’ astfel că la o interogare a bazei de date snapshot se
pot folosi date de pe baza de date originală dar și din fișierul “sparse”.
USE master
GO
-- Create Regular Database
CREATE DATABASE RegularDB
GO
USE RegularDB
GO
-- Populate Regular Database with Sample Table
CREATE TABLE FirstTable (ID INT, Value VARCHAR(10))
INSERT INTO FirstTable VALUES(1, 'First');
INSERT INTO FirstTable VALUES(2, 'Second');
INSERT INTO FirstTable VALUES(3, 'Third');
GO
-- Create Snapshot Database
CREATE DATABASE SnapshotDB ON
(Name ='RegularDB',
FileName='c:\SSDB.ss1')
AS SNAPSHOT OF RegularDB;
GO
Bazele de date snapshot funcționează la nivel de date. Înainte ca datele sursă sa fie modificate
pentru prima dată, datele originale se copiaza din baza de date sursă în baza de date snapshot.
Baza de date snapshot stochează datele originale, păstrând datele înregistrate așa cum existau în momentul
creării bazei de date snapshot. Același procedeu se repetă pentru fiecare înregistrare ce este modificată
pentru prima oară. Pentru utilizator, o bază de date snapshot nu pare să se schimbe, pentru ca operațiunile
de citire de pe o bază de date snapshot acceseaza întotdeauna datele originale, indiferent de locul în care
sunt stocate.
Pentru a stoca date originale copiate, baza de date snapshot utilizează una sau mai multe imagini
rare(‚parse’). Inițial, un fișier rar este un fișier în esență gol care nu conține date ale utilizatorului și nu are
alocat un spațiu pe disc pentru datele utilizatorului. Pe masura ce datele sunt actualizate în baza de date
sursă, dimensiunea fișierului crește.
Figura de mai jos ilustrează efectele a două modele de actualizare contrastante cu privire la
dimensiunea unei baze de date snapshot.
Prima figurare reflecta o situatie în care doar 30 la suta din datele originale sunt actualizate pe
parcursul duratei unei baze de date snapshot.
A doua figură reflectă un mediu în care 80 la sută din paginile originale sunt actualizate pe
parcursul duratei unei baze de date snapshot.
USE master
GO
-- Create BAZADB Database
CREATE DATABASE BAZADB
GO
USE BAZADB
GO
-- Populate BAZADB Database cu o tabela simpla
CREATE TABLE FirstTable(ID INT,Value VARCHAR(10))
INSERT INTO FirstTable VALUES(1,'First');
INSERT INTO FirstTable VALUES(2,'Second');
INSERT INTO FirstTable VALUES(3,'Third');
GO
-- Create Snapshot Database
CREATE DATABASE SnapshotBAZA ON
(Name='BAZADB',
FileName='c:\SSBAZADB.ss1')
AS SNAPSHOT OF RegularDB;
GO
-- Select from BAZADB and SnapshotBAZA
SELECT * FROM BAZADB.dbo.FirstTable;
SELECT * FROM SnapshotBAZA.dbo.FirstTable;
GO
Să vedem rezultatul
Acum să ștergem ceva din baza BAZADB și să vedem ce se întamplă după.
-- Delete from Regular Database
DELETE FROM BAZADB.dbo.FirstTable;
GO
-- Select from Regular and Snapshot Database
SELECT * FROM BAZADB.dbo.FirstTable;
GO
Când verificam detaliile fișierului ‘sparse’ creat de baza de date Snapshot, vom observa următorul lucru
interesant
Asta arată clar că dacă ștergem ceva din BAZADB, se copiaza datele în baza de date Snapshot. Din
această cauza marimea bazei de date SnapshotBAZA a crescut.
Acum sa trecem mai departe și sa restaurăm datele șterse din baza de date SnapshotBAZA în BAZADB,
baza originală.
1. Back-up
Realizarea copiilor de siguranță, precum și restaurarea bazelor de date sunt operațiuni obligatorii
atunci când vorbim de SGBD-uri - Sistemul de Gestiune al Bazei de Date (eng. DBMS - database
management system). În prezența SQL Server Management Studio, aceste operațiuni se pot realiza foarte
ușor. Totuși, sunt situații când acest lucru se poate realiza doar în linie de comandă.
Un exemplu ar fi automatizarea procesului de backup / restore în cazul unei ediții EXPRESS. Serviciul
windows SQL Server Agent este instalat odată cu instanța MSSQL (principalul său scop fiind acela de a
executa diverse activităţi de mentenanţă), dar în cazul edițiilor EXPRESS, din cauza limitărilor impuse,
acest serviciu nu poate fi pornit.
Alternativa la SQL Server Agent ar fi utilizarea scheduled task-urilor, dar presupune cunoașterea
comenzilor T-SQL.
Exemplu:
To Backup:
sqlcmd -S.\SQLExpress
1> BACKUP DATABASE dbName TO DISK = 'path'
2> GO
Backup-uri, care sunt create într-o versiune nouă de SQL Server nu poate fi restabilită în versiunile
anterioare de SQL Server.
Realizarea copiilor de siguranță, sau restaurarea bazelor de date presupune implicit existența unei
strategii backup & restore:
full backup: se realizează o copie în întregime a bazei de date. Toate celelalte tipuri de backup se
bazează pe existența unei astfel de copii de siguranță. Acest tip de backup se realizează cu baza de
date activă (fiind permis accesul și eventualele modificări) și poate fi efectuat indiferent de tipul de
model de restaurare (eng: database recovery model: SIMPLE, BULK_LOGGED, FULL).
O bază de date completa (full backup) determină o perioada mare de timp pentru backup și
necesită mai mult spațiu de stocare.
Dupa ce se crează o copie la baza de date completă aveți posibilitatea să creați o copie de rezervă
bază de date diferență(differential backup).
Cum se realizează backup-ul :
După conectarea la instanță de SQL Server în Explorer obiect, faceți click pe numele serverului
pentru a extinde server tree (copacul).
Faceți clic dreapta pe baza de date – tasks – back up - Backup type - OK.
differențial backup: realizează o copie de siguranță doar a modificărilor apărute de la ultimul full
backup. Acest tip de back-up 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. Operația de backup se realizează online, nu este atât de
consumatoare de resurse precum copia în întregime a unei baze de date, și se poate aplică doar
asupra bazelor de date ale căror model de restaurare este BULK_LOGGED sau FULL.
C. Exemplu restaurare bază date pe baza copiilor de siguranță full, differential și transaction log:
--Restore Comanda database (with replace)
--from a full backup, differential backup and transaction log
USE [master]
GO
Să presupunem că baza de date Comanda este configurată în modul de restaurare FULL, iar
realizarea copiilor de siguranță se realizează conform secvenței:
Se dorește restaurarea bazei de date în starea de Joi ora 04:30 PM. În acest caz, secvența de
restaurare va fi:
Se dorește restaurarea bazei de date în starea de Sâmbătă ora 05:00 AM. Secvența de
restaurare va fi:
Opțiunea COPY_ONLY are rolul de a nu afecta secvența copiilor de siguranță. Spre exemplu, copiile de
siguranță differential și transaction log depind de copia de siguranță full.
Crearea unui plan de mentenanță
1. Se expandează consola până la nodul Management. Clic dreapta -> Maintenance Plan Wizard -> Next.
2. În fereastra urmatoarea, foarte importanta este bifa “Separate schedules for each task”.
NEXT
4. În fereastra urmatoare sunt reconfirmate task-urile selectate la pasul anterior. Pentru că s-a optat pentru
“Separate schedules for each task”, ordinea de afișare nu este modificabilă.
NEXT
5. Se definesc detaliile task-ului “Check Integrity”: selectarea bazelor de date , programarea executării
OK
OK
NEXT
6. Se definesc detaliile task-ului “Reorganize Index”: selectarea bazelor de date (aceleași ca la punctul 5),
OK
Bebifati “Compact large objects”, ca mai jos, inainte de a trece la pasul urmator.
NEXT
7. Se definesc detaliile task-ului “Rebuild Index”: selectarea bazelor de date (aceleași ca la punctul 5.),
OK NEXT
8. Se definesc detaliile task-ului “Update Statistics”: selectarea bazelor de date (aceleași ca la punctul 5),
Important: ora setata să fie 04:01:00 AM pentru a evita neexecutarea acestui task atunci cand se trece fie
la ora de vară fie la cea de iarnă.
9. Se definesc detaliile task-ului “History Cleanup”: se vor bifa toate cele 3 opțiuni ca în imaginea de mai
OK NEXT
10. Se definesc detaliile task-ului “Back Up Database(Full)”: selectarea bazelor de date (aceleași ca la
OK NEXT
Important: În secțiunea “Create a backup file for every database” se bifeaza “Create a sub-directory for
each database”, se selecteaza calea unde sa se salveze back-up-urile si se completeaza extensia bak. Se
bifeaza “Verify backup integrity”.
11. Se definesc detaliile task-ului “Maintenance Cleanup”: selectarea bazelor de date (aceleași ca la
OK NEXT
Important: acordați atenție secțiunii: “Search folder and delete files based on a extension” și bifați ca în
imaginea de mai sus.
12. În fereastra urmatoare se debifează “Write a report to a text file NEXT
13. FINISH în urmatoarea fereastra pentru a finaliza planul de mentenanță
14. CLOSE pentru a închide wizard-ul dupa finalizarea cu success a creării task-urilor.
Observație: în momentul finalizării planului de mentenanță, în sectiunea SQL Server Agent – Jobs, sunt
afisate job-urile aferente task-urilor definite în planul de mentenanță nou creat.
1. Modificarea denumirii job-urilor create prin planul de mentenanță pentru o facila identificare a
acestora:
- dublu clic pe primul subplan și se completează numele și descrierea:
- Dublu clic pe subplan și în fereastra, clic pe butonul din sectiunea “Schedule”. Salvare
plan de mentenanță.