Microsoft SQL Server

SQL Server Descrierea imaginii Logo-sql2012.png. Descrierea imaginii Microsoft SQL Server 1 11 Network Enhancements.png. informație
Dezvoltat de Microsoft
Prima versiune 24 aprilie 1989
Ultima versiune 2019 (4 noiembrie 2019)
Scris in C ++ , C și C #
Sistem de operare Linux , Microsoft Windows și Windows Server
Citiți formatele Limbajul de definire a raportului SQL Server Reporting Services ( d ) și Limbajul de definiție a raportului SQL Server Reporting Services (UTF-8) ( d )
Formate scrise Limbajul de definire a raportului SQL Server Reporting Services ( d ) și Limbajul de definiție a raportului SQL Server Reporting Services (UTF-8) ( d )
Tip Sistem de gestionare a bazelor de date relaționale ( în )
Licență Licență de proprietate și EULA
Site-ul web www.microsoft.com/sql-server

Microsoft SQL Server este un sistem de gestionare a bazelor de date (SGBD) în limbaj SQL careîncorporează, printre altele, un RDBMS (SGBD relațional  ") dezvoltat și comercializat de compania Microsoft . Funcționează sub sistemul de operare Windows și Linux (de lamartie 2016), dar este posibil să-l lansați pe Mac OS prin Docker , deoarece există o versiune pentru descărcare pe site-ul Microsoft.

Istoric

Deși inițial a fost co-dezvoltat de Sybase și Microsoft, Ashton-Tate a fost asociat și cu prima sa versiune, lansată în 1989. Această versiune a fost lansată pe platformele Unix și OS / 2 . De atunci, Microsoft a portat acest sistem de baze de date în Windows .

Când a fost creat, Sybase SQL Server a moștenit principiile motorului Ingres dezvoltat inițial de Universitatea din Berkeley.

În 1994, parteneriatul dintre cele două companii fiind întrerupt, Microsoft a lansat versiunea 6.0 apoi 6.5 singură, pe platforma Windows NT.

Microsoft SQL Server face acum parte din strategia tehnică a bazei de date Microsoft. Motorul MSDE, care stă la baza SQL Server, ar trebui să înlocuiască în cele din urmă motorul Jet (cel care gestionează bazele de date Access ) în aplicații precum Exchange și Active Directory .

Versiunea 2005 a SQL Server a fost lansată pe3 noiembrie 2005în același timp cu Visual Studio 2005 . Suportul pentru Windows Vista și Windows Server 2008 nu a fost adăugat până la Service Pack 2 (SP2). În prezent, Service Pack 3 este disponibil. Optimizatorul a fost refăcut complet, la fel ca și motorul de relații.

Versiunea 2008 a SQL Server (numele de cod Katmaï) a fost lansată în august 2008 . Versiunea minoră R2 din 2008 a fost lansată în 2010.

Versiunea 2012 a SQL Server a fost lansată în aprilie 2012 .

Versiunea 2014 a SQL Server a fost lansată pe 1 st aprilie 2014 cu un motor „în memorie” complementar motorului relațional.

Versiunea SQL Server 2016 a fost lansată pe 1 st iunie 2016.

În timpul dezvoltării versiunii din 2005, proiectul era la acea vreme unul dintre cele mai mari proiecte IT din lume. Peste 1.600 de dezvoltatori au participat la codificarea nucleului și se estimează că peste 10.000 de persoane au lucrat direct sau indirect ( interacțiuni om-mașină , documentare, traducere etc.).

Particularități

SQL Server se distinge de concurență prin bogăția sa mare, care nu necesită opțiuni plătite suplimentare în limita versiunii alese.

Multi-bază, multi-schemă

Comparativ cu competitorii săi Oracle , MySQL sau PostgreSQL , SQL Server se distinge prin faptul că este un RDBMS (Sistem de gestionare a bazelor de date relaționale) inițial multibază și schemă multiplă . Este posibil să faceți interogări native între baze. De exemplu, următoarea interogare leagă două tabele din două baze de date diferite:

SELECT * FROM   BASE_A.dbo.TABLE1 AS T1        INNER JOIN BASE_B.dbo.TABLE2 AS T2              ON T1.ID = T2.ID;

Optimizatorul poate face un plan de interogare perfect optimizat, chiar dacă interogarea consultă date din mai multe baze de date ...

Deși PostGreSQL este multibază și multischemă, această posibilitate de interogare simultană nu este nativă și este necesar să treci pe lângă intermediarul „dblink” care interzice îmbinările și astfel orice posibilitate de optimizare ... Oracle cu versiunea 12 încearcă să integreze acest lucru același concept de multibază (numit multi-chiriaș ), dar suferă de aceeași problemă ca și PostGreSQL. MySQL este o singură schemă, multibase.

Managementul schemei SQL

Flexibilitatea gestionării schemei SQL este de așa natură încât este posibilă transferarea unui obiect dintr-o schemă în alta cu o singură comandă ALTER SCHEMA.

Proprietarii sunt diferiți de scheme și este posibil să transferați proprietatea unei baze de date, a unei scheme sau a unui obiect de la un utilizator SQL la altul, prin intermediul comenzii ALTER AUTHORIZATION.

Paralelism

SQL Server funcționează nativ în paralel. De îndată ce se estimează că o interogare depășește pragul de cost la care un plan de interogare poate fi paralelizat, SQL Server rescrie planul folosind algoritmi multi-threaded și dacă noul plan este mai puțin costisitor, înlocuirea are loc automat. Această caracteristică există în toate edițiile și nu este un modul plătit de adăugat în plus, așa cum este cazul Oracle.

Operațiile de citire și scriere fizică beneficiază, de asemenea, de paralelism sistematic, deoarece operațiunile IO sunt efectuate direct de SQL Server și nu prin stratul de sistem, așa cum este cazul PostGreSQL sau MySQL.

Comprimare

În versiunea Enterprise, motorul este capabil să comprime date la nivel de rând sau pagină în tabele, precum și în indexuri. Compresia de rezervă este disponibilă din ediția standard de la versiunea 2008 R2.

Backup la cald

De la SQL Server 7 (1998), SQL Server a făcut posibilă backupul „bazei de date deschise” fără a întrerupe serviciul de date și fără a deranja activitatea utilizatorului. Această copie de rezervă se poate face la nivel global, prin grup de fișiere, prin fișier sau prin jurnalul de tranzacții.

Unic ... cu excepția NULL!

În SQL Server, constrângerile de unicitate iau în considerare marcatorul NULL ca fiind o valoare și, prin urmare, interzic prezența mai multor NULL în coloanele unei astfel de constrângeri. Acest lucru nu este conform cu standardul SQL deoarece NULL fiind o absență de valoare, nu apare unicitatea. Cu toate acestea, există o modalitate ușoară de a rezolva această problemă, care este de a crea un index filtrat unic care să se raporteze la datele evaluate.

Exemplu, lăsați tabelul:

CREATE TABLE T_EMPLOYE_EMP (EMP_ID            INT PRIMARY KEY,  EMP_NOM           VARCHAR(32) NOT NULL,  EMP_MATRICULE     CHAR(8));

Deoarece numărul personalului trebuie să fie unic pentru valorile cunoscute, crearea unui indice unic filtrat pe valorile exprimate în coloana număr personal, face posibilă rezolvarea problemei:

CREATE UNIQUE INDEX X_EMP_MATRICULE    ON T_EMPLOYE_EMP(EMP_MATRICULE)    WHERE EMP_MATRICULE IS NOT NULL;

Reintroducerea declanșatoarelor (tabelul „mutant”)

În declanșatoarele SQL Server este posibilă actualizarea tabelului țintă al evenimentului la originea executării declanșatorului, spre deosebire de multe baze de date care interzic această posibilitate (eroare „tabel mutant” în Oracle). Trebuie amintit că Sybase a inventat inițial conceptul de declanșator în 1986, punând astfel codul executabil într-o bază de date relațională pentru prima dată.

De exemplu, un declanșator UPDATEpe o masă poate modifica datele care sunt în așteptarea modificării:

CREATE TRIGGER E_U_PERSONNE ON T_PERSONNE_PRS FOR UPDATE AS IF UPDATE(PRS_NOM) UPDATE T_PERSONNE_PRS SET PRS_NOM = UPPER(PRS_NOM) WHERE PRS_ID IN (SELECT PRS_ID FROM inserted);

În exemplul de mai sus, numele numelor nou inserate sau modificate sunt cu majuscule.

Deoarece reintrarea poate duce la recursivitate, diferite setări permit rezolvarea acestei probleme atât la nivelul bazei de date, cât și la nivelul instanței.

Vizualizări indexate automatizate

Spre deosebire de Oracle sau PostGreSQL, unde vizualizările materializate trebuie actualizate de cele mai multe ori înainte de utilizare, vizualizările indexate SQL Server sunt întotdeauna sincrone. În plus, optimizatorul este capabil să înlocuiască din timp vizualizarea indexată pentru interogarea totală sau parțială (versiunea Enterprise), ceea ce este foarte practic atunci când DBA nu are acces la codul programelor client (cazul aplicațiilor editorilor) .

Combinare automată

Pentru aplicațiile proiectate în .net și care utilizează conectorul ADO, SQL Server efectuează un pooling automat. Simplul fapt de a distinge două lanțuri de conectare este suficient pentru a crea două bazine diferite. Pentru ca punerea în comun să fie eficientă, conexiunile trebuie închise odată ce a avut loc procesarea computerului.

Administrare centralizată

Prin diferite mijloace, SQL Server vă permite să gestionați central un set de servere. Puteți crea un server de administrare centralizat și puteți adăuga o listă a serverelor SQL ale companiei pentru a lansa interogări trimise simultan pe toate serverele sau altfel creați sau executați aceeași procedură pe toate serverele în același timp, aceasta în instrumentul SSMS (SQL Server Management Studio).

La fel, programatorul de sarcini și managerul de alerte (SQL Agent) vă permit să definiți lucrări multi-server, cum ar fi copierea de rezervă, defragmentarea indexurilor, recalcularea statisticilor sau verificarea integrității fizice a spațiilor.

Caracteristici pentru dezvoltare

Motorul SQL Server OLTP are multe caracteristici pe care ar fi dificil să le enumerăm pe toate. Iată câteva care fac diferența cu SGBD mai ușoare, cum ar fi MySQL sau PostGreSQL ...

Tabel, index și procedura „În memorie”

SQL Server a fost echipat cu un motor „În memorie” de la versiunea 2014. Tabelele și indexurile pot fi în totalitate în memorie (structură și date: date și schemă) sau persistente la nivel de structură (numai date). Procedurile, în limite bine definite, pot fi compilate nativ, mai degrabă decât interpretate. Actualizările rămân tranzacționale, fără a fi nevoie să scrieți în fișierele jurnal de tranzacții (versiunea „în memorie”). Aceasta permite îmbunătățiri foarte semnificative ale performanței pentru procesarea calculelor complexe referitoare la volume mari de date. Un exemplu tipic este calculul performanței financiare a prețurilor bursiere în timp real.

Intra join (APLICĂ)

SQL Server a fost primul cu versiunea 2005 care a introdus operatorul intra-join APPLYpentru a facilita recuperarea datelor încapsulate într-un tabel virtual dintr-o coloană de tabel, așa cum se întâmplă atunci când se utilizează o funcție de tabel într-o interogare în care unul dintre argumentele provine dintr-unul dintre tabelele din interogare sau atunci când XML este tabelat. Operatorul APPLYtrebuie să fie precedat de cuvântul cheie CROSSsau OUTERpentru a-i defini comportamentul. Cu CROSSdacă argumentul este NULL, rândurile afectate sunt eliminate din rezultat în timp ce cu OUTERele sunt conservate.

Operatorul APPLYeste similar cu operatorul LATERALstandardului SQL, dar sintaxa sa mai extinsă permite operațiuni care LATERALnu pot fi efectuate. Oracle a introdus recent acest operator în versiunea 12.1 (2014).

SELECT top 10 * FROM sys.dm_exec_query_stats AS qs CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) OUTER APPLY sys.dm_exec_query_plan(qs.plan_handle) ORDER BY total_worker_time DESC

În acest exemplu, folosim funcția tabelului sys.dm_exec_query_plan, care returnează planul de execuție, din „mânerul” planului furnizat de argumentul „plan_handle” găsit în vizualizarea sys.dm_exec_query_stats. Această interogare vă permite să aflați cele 10 interogări care au consumat cel mai mult timp CPU de când a fost lansată instanța.

Gustări (colaționare literală)

SQL Server are una dintre cele mai bogate colecții de colațiuni (3.887 în versiunea 2014), permițându-vă să controlați 101 limbi printre care, pe lângă franceză, există breton și Corsica! Colecțiile vă permit să efectuați căutări ținând cont sau nu de majuscule (majuscule, minuscule - CS / CI), accente și alte caractere diacritice (accente, cedilă, ligaturi ... - AS / AI), caracterele de lățime (2 = 2  ? - WS) sau diferite tipuri de kana (katakana și hiragana din japoneză - KS), sau chiar pentru a efectua comparații binare ținând cont sau nu de codul hexazecimal. Colecțiile fiind complet independente de seturile de caractere (seturi Iso_1), deși le permit să fie simulate (ASCII, UNICODE, UTF16, EBCDIC ...). Suportul de colaționare este oferit la patru niveluri: server (1), bază (2), coloană de tabel sau vizualizare (3) și, în final, predicat (4), gestionarea șirurilor de caractere și sortarea coloanelor de text în interogări.

SELECT * FROM T_UTILISATEUR_APPLICATIF_UTA WHERE UTA_CONNEXION = 'Éric Blüm' COLLATE French_CI_AI AND UTA_MOT_DE_PASE = 'a²E3wx+Z' COLLATE Latin1_General_CS_AS_WS

În exemplul următor, căutăm un nume de conexiune cu o colație „slabă” (indiferent de majuscule sau accente) și parola cu o colație „strânsă” (binară):

Lista colațiilor disponibile pe server poate fi obținută prin interogare:

SELECT * FROM sys.fn_helpcollations()

Date XML

De la versiunea 2005, SQL Server acceptă tipul XML (fragment) și vă permite să manipulați XML prin interogări XQuery / XPath. O coloană de tip XML poate fi tastată printr-o colecție de scheme XML (XSD - Xml Schema Definition). Următorul exemplu arată crearea unei colecții de scheme XML cu un singur element, apoi crearea unui tabel cu o coloană XML tastată cu acea colecție de scheme:

-- création d'un schéma XML pour validation des données d'une colonne XML CREATE XML SCHEMA COLLECTION XSC_DONNEES_ENTREPRISE as N' <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:company="http://www.exemple.com/entreprise" targetNamespace="http://www.exemple.com/entreprise" elementFormDefault="qualified"> <xs:element name="personnel"> <xs:complexType> <xs:choice maxOccurs="unbounded"> <xs:element name="employe"> <xs:complexType> <xs:all> <xs:element name="nom" type="xs:string" /> </xs:all> <xs:attribute name="matricule" type="xs:ID" /> </xs:complexType> </xs:element> </xs:choice> </xs:complexType> </xs:element> </xs:schema>'; -- création d'une table qui possède une colonne de type XML dont les données doivent se conformer au schéma ci avant CREATE TABLE T_ENTREPRISE_EMPLOIS_EEP (EEP_ID INTEGER PRIMARY KEY IDENTITY, EEP_NAME VARCHAR(12), EEP_XML_DATA XML (XSC_DONNEES_ENTREPRISE) --> création d'une colonne XML typée par XSC_DONNEES_ENTREPRISE (collection de schémas XML) );

O interogare SELECT SELECT poate genera ieșire XML în locul unui rezultat tabelar, prin clauza Transact-SQL „PENTRU XML” pentru care există multe opțiuni de prezentare. Exemplul de mai jos este folosit pentru a prezenta o ierarhie XML care enumeră constrângerile unui tabel sub formă de elemente XML:

SELECT TABLE_SCHEMA AS schemaSQL, TABLE_NAME AS nomTable, CONSTRAINT_NAME AS nomContrainte, CONSTRAINT_TYPE AS typeContrainte FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS AS contrainte WHERE TABLE_NAME = 'DepartementFrancais' FOR XML AUTO, ELEMENTS, ROOT('Contraintes');

Această interogare va returna, de exemplu, următoarele date:

<Contraintes> <contrainte> <schemaSQL>Reference</schemaSQL> <nomTable>DepartementFrancais</nomTable> <nomContrainte>pk_DepartementFrancais</nomContrainte> <typeContrainte>PRIMARY KEY</typeContrainte> </contrainte> <contrainte> <schemaSQL>Reference</schemaSQL> <nomTable>DepartementFrancais</nomTable> <nomContrainte>chk_DepartementFrancais_ForceSTSRid</nomContrainte> <typeContrainte>CHECK</typeContrainte> </contrainte> <contrainte> <schemaSQL>Reference</schemaSQL> <nomTable>DepartementFrancais</nomTable> <nomContrainte>UK_DepartementFrancais_NomChefLieu</nomContrainte> <typeContrainte>UNIQUE</typeContrainte> </contrainte> <contrainte> <schemaSQL>Reference</schemaSQL> <nomTable>DepartementFrancais</nomTable> <nomContrainte>UK_DepartementFrancais_Nom</nomContrainte> <typeContrainte>UNIQUE</typeContrainte> </contrainte> </Contraintes>

În cele din urmă, este posibil să gestionați direct datele XML în rutine (de exemplu, provenind din fișiere), utilizând funcțiile și procedurile OPENXML, sp_xml_preparedocument, sp_xml_removedocument ...

Sistem integrat de informații geografice (GIS)

De la versiunea 2008, SQL Server integrează un GIS în toate versiunile. Acest lucru permite construirea de obiecte geometrice (geometrie euclidiană) sau geografice (ținând cont de curbura spațială a scoarței terestre) folosind tipurile GEOMETRIE și GEOGRAFIE (POINT, LINESTRING, POLIGON și combinații ...). Se bazează pe standardul OGC , la fel ca suplimentul spațial PostGIS pentru PostgreSQL . versiunea 2012 a adăugat obiecte curbate (CircularStrings, CompoundCurves, CurvePolygons ...) și o mai bună precizie a calculelor (48 de biți în loc de 27 anterior).

Indicii spațiali fac posibilă realizarea anumitor metode, cum ar fi STContains, STDistance, STEquals, STIntersects, STOlaps, STTouches, STWithin ...

În conformitate cu standardul SQL care oferă DATALINK, SQL Server implementează un instrument similar numit FileStream care permite stocarea fișierelor ca fișiere în sistemul de operare, dar sub responsabilitatea și controlul serverului bazei de date (serializare, tranzacție, fiabilitate, securitate. ..). Acest lucru permite, printre altele, o copie de rezervă integrată și sincronă a datelor relaționale și non-relaționale, de exemplu pentru imaginile produselor de pe un site web, cum ar fi manualele PDF electronice pentru mașinile dintr-o flotă de întreținere. Acest instrument este utilizat în special pentru EDM. Fișiere electronice care pot fi supuse indexării textuale.

În plus și începând cu versiunea 2012, SQL Server oferă conceptul de FileTable, care nu este altceva decât un tabel virtual asociat cu un punct de intrare (director) al sistemului computerizat, pentru a permite gestionarea bidirecțională a fișierelor electronice: fișierele gestionate de limbajul SQL este accesibil în sistemul de fișiere Windows și invers: un fișier sau un director pot fi inserate în tabel prin intermediul unei interogări SQL și acesta din urmă va fi văzut în arborele sistemului.

Instrumentul de gestionare a cunoștințelor Sharepoint folosește masiv acest concept pentru a gestiona documentele electronice care sunt depuse acolo și toate versiunile tranzitorii.

Servicii Web

Introdusă cu versiunea 2008, capacitatea de a crea servicii web native direct în server utilizând puncte finale SOAP / HTTP, a fost considerată depreciată în versiunea 2008 R2 și a fost retrasă în versiunea 2012. Cu toate acestea, SQL Server vă permite să creați și să utilizați intern, multe puncte finale pentru anumite servicii, cum ar fi oglindirea bazelor de date sau brokerul de servicii ...

Serviciu de broker

Obiectul serviciului Broker este de a oferi un instrument de mesagerie de baze de date pentru gestionarea fluxurilor de date între serverele SQL în mod asincron, serializat și tranzacționat prin cozi care sunt tabele de sistem. Acest lucru face posibilă crearea SODA (Service Oriented Database Architecture), adică baze de date de instanțe diferite care dialogează între ele la nivel de date și nu mai la nivel de aplicație, așa cum este cazul SOA.

Acest lucru face posibilă crearea de baze de date distribuite, colaborative și distribuite, „grid computing” sau chiar WorkFlow și, de exemplu, pentru a oferi o suprafață de atac mai bună pentru accesuri foarte competitive. Acest sistem diferă de replicarea datelor, prin faptul că informațiile sunt transmise în principal în formă XML (criptat), pe stratul HTTP (Internet de exemplu) prin intermediul serviciilor web și că nu există nicio obligație pentru bazele de date de origine și destinație și tabelele să fie identice din punct de vedere structural.

Un exemplu interesant este înlocuirea instrumentelor tradiționale de mesagerie, cum ar fi seria MQ, cu un astfel de dispozitiv, mult mai fiabil ...

Service Broker poate fi utilizat prin ediția gratuită SQL Server Express, a fost utilizat în special în industrie pentru a gestiona informațiile de producție ale mai multor mașini din aceeași flotă pentru a trimite aceste date către un server central. Acesta este în special cazul lanțului de producție a vaccinurilor unui renumit institut francez.

Funcții pentru administrator

În plus față de funcțiile pentru dezvoltator, SQL Server prezintă multe instrumente pentru a facilita administrarea. Iată câteva.

Replicarea datelor

Nu trebuie confundat cu „disponibilitate ridicată”, care constă în duplicarea unei baze de date întregi, SQL Server are 8 moduri de replicare a datelor (replicarea anumitor informații din anumite tabele care vin de la baze de date la alte baze de date de pe alte servere), inclusiv tranzacționale, punct-la-punct , moduri instantanee sau de îmbinare. Replicarea de la și către Oracle este, de asemenea, acceptată în ediția Enterprise.

Site-urile de vânzări online, cum ar fi Cdiscount , Fnac.com sau Vente-privee.com, utilizează replicarea, atât pentru disocierea datelor de FO (Front Office - în esență, date de pe site), cât și de BO (Back Office - management). Facturi, expedieri, stocuri. ..), dar și pentru a lărgi suprafața de atac pentru a absorbi sarcina multor utilizatori.

Valabilitate ridicată

Duplicarea bazelor de date pentru a stabili un sistem foarte rezistent se realizează prin patru mijloace diferite:

  • „  Expediere jurnal  ” prin trimiterea copiei de rezervă a jurnalului de tranzacții și reaplicarea tranzacțiilor pe baze de urgență. Sistem de înclinare manuală asincron. Pierderi limitate la latența trimiterii jurnalelor. Funcționează bază cu bază.
  • „  Oglindirea  ” prin trimiterea în mod standby a paginilor modificate pulsate din jurnalul de tranzacții. Sistem transparent pentru aplicații (.net sau ODBC) în mod sincron sau asincron cu comutare manuală sau automată (dacă este sincronă) de la bază la bază. Zero latență de trecere la eșec dacă sincron și în modul automat. O singură oglindă este tolerată pentru fiecare bază de date și pentru trecerea automată la eșec este necesar un server martor (versiunea Express gratuită de exemplu) pentru a evita sindromul „creierului divizat”.
  • „  Clusterizarea  ” prin redundanță a serverului (până la 64 de noduri active sau pasive) care partajează un compartiment de unitate ( Share Nothing ), pe care îl puteți adăuga sistemul de replicare IO al compartimentului pentru a evita SPOF ( Single Point Of Failure ). Vă permite să comutați manual sau automat întreaga instanță în conformitate cu regulile care urmează a fi implementate. Întotdeauna date sincrone. Timpul de schimbare în funcție de scenariul stabilit, dar, în general, câteva zeci de secunde până la câteva minute.
  • Tehnologia   „ AlwaysOn ”: combinarea oglindirii și clusterului de failover (FCI pentru instanța clusterului de failover ) permițând asocierea diferitelor baze în cadrul grupurilor de disponibilitate, ceea ce asigură trecerea în colecție colectivă a tuturor bazelor în cazul unei defecțiuni a uneia dintre ele. În ceea ce privește oglindirea, sistemul este transparent pentru aplicații (.net sau ODBC) în mod sincron sau asincron cu comutare manuală sau automată (dacă este sincronă) grup cu grup. Latența de comutare este zero dacă este adoptat modul sincron. Numărul de „replici” din același grup de disponibilitate este limitat la 10: 8 asincron și 2 sincron. Un singur grup de disponibilitate care poate conține mai mult de o sută de baze de date.

Managementul strategiei (politici administrative - management politic)

Este posibil să creați reguli de afaceri și să vă planificați funcționarea. Aceasta este pentru a verifica un atribut al unei fațete, printr-o regulă care poate fi verificată în moduri diferite. Cateva exemple:

  • verificați o dată pe zi dacă fiecare bază de date a fost copiată
  • forțează o regulă de numire pentru tabele, vizualizări, proceduri
  • interzice utilizarea sistematică a schemei SQL implicite dbo

Instantaneul bazei de date

Acest proces face posibilă crearea unei noi baze de date dintr-o bază de date existentă, care reprezintă datele în momentul lansării „instantaneului”. Această copie numai în citire este realizată instantaneu, indiferent de volumul bazei de date inițiale. Acest lucru permite, de exemplu:

  • obțineți cu certitudine toate datele din baza de date la un anumit moment
  • pentru a putea compara în dezvoltare datele inițiale și finale după executarea unei proceduri
  • reveniți fie prin cererea de modificare între baze de date, fie prin restaurarea bazei de date din instantaneu

Partiționare

Prezent de la versiunea 2005 în ediția Enterprise, partiționarea face posibilă împărțirea tabelelor și a indexurilor în conformitate cu un criteriu de date al tabelului. soluția reutilizabilă este foarte simplă și se bazează pe trei etape:

  • Crearea valorilor esențiale ale partiționării printr-o funcție de partiționare (CREATE PARTITION FUNCTION ...);
  • Crearea unei scheme de ventilație a pereților despărțitori în diferitele spații de depozitare (CREAȚI PARTEA SCHEME ...);
  • Crearea tabelului sau a indexului care exploatează schema de partiționare utilizând un criteriu care trebuie să fie o coloană non-NULL prezentă în definiția obiectului.

Odată ce acești pași sunt finalizați, funcția și schema de partiționare pot fi reutilizate pentru un alt obiect în scopul alinierii partiției, cum ar fi un tabel de facturi și detaliile subordonate sau tabelul de rânduri al facturii.

Apoi este posibil să gestionați partițiile (mutați, îmbinați, împărțiți ...) la cald utilizând funcțiile ALTER PARTITION ... SPLIT RANGE / MERGE RANGE și ALTER TABLE ... SWITCH PARTITION ... comenzi care redau mâna imediat și acționează la un nivel scăzut, în fundal, pentru a opera mișcările.

Plan de întreținere

Microsoft SQL Server oferă mulți vrăjitori pentru a efectua sarcini adesea nemiloase, cum ar fi importul / exportul de date sau backup / restaurare. Dar dacă este util pentru începători, instrumentul de gestionare a planului de întreținere permite în câteva clicuri să îndeplinească toate sarcinile esențiale pentru supraviețuirea și menținerea performanței unei baze. Acest instrument permite, printre altele, să efectueze următoarele sarcini în mod recurent:

  • backup;
  • verificarea integrității fizice;
  • defragmentarea indexurilor;
  • recalculări de statistici.

... și planificați executarea acestuia.

Guvernatorul resurselor

Deoarece coabitarea pe picior de egalitate a tuturor utilizatorilor aceleiași baze poate pune rapid probleme, SQL Server integrează un guvernator de resurse care permite alocarea mai multor mai puține resurse (RAM, CPU, discuri ...) unui anumit grup de utilizatori. Cazul clasic este amestecul de utilizatori pasionați de tablouri de bord și rapoarte de tot felul (de exemplu, controlori de gestionare) care consumă o mulțime de date, penalizând producția de date de la utilizatorii care efectuează introducerea unității ...

Managementul calității datelor

SQL Server integrează două module distincte pentru a gestiona date de calitate în bazele de date:

  • Servicii de calitate a datelor (DQS): vă permite să gestionați calitatea datelor din bazele de date relaționale și de luare a deciziilor în mod interactiv și printr-o bază de cunoștințe: curățare, corectare, îmbogățire, standardizare, deduplicare etc.
  • Master Data Services (MDS): este soluția de gestionare a datelor master SQL Server.

Serviciu integrat de trimitere e-mail

Database Mail este instrumentul de gestionare a e-mailurilor SQL Server și se bazează pe Service Broker. Acest sistem face posibilă definirea mai multor profiluri de trimitere a e-mailurilor (de exemplu, unul pentru aplicații și celălalt pentru administrare) cu posibilă redundanță a serverelor SMTP. Trimiterea e-mailului este folosită în special de SQL Agent pentru a notifica uneori succesul, dar adesea eșecurile, ale sarcinilor programate (de exemplu, că nu s-a putut face o copie de rezervă). Procedura msdb.dbo.sp_send_dbmail este utilizată pentru a trimite un e-mail, inclusiv cu atașamente, rezultatul interogării, conținut în text sau în formă îmbogățită ...

Instrumente de audit

SQL Server este bogat în instrumente de audit, fie pentru securitate, evoluția datelor sau performanță. Vom descrie unele dintre ele.

Audit de securitate (Audit bază de date)

Pe lângă faptul că auditul C2 este învechit pentru a fi înlocuit cu criteriile comune (ISO 15408 ), SQL Server oferă posibilitatea de a urmări tot ceea ce este legat de securitate prin auditul bazei de date și toate acțiunile posibile atât la nivel de server, cât și la nivelul unui o anumită bază de date.

Acest sistem este perfecționat până la punctul în care este posibilă oprirea automată a serverului în cazul defectării sistemului de audit, astfel încât intrușii să nu profite de această stare de funcționare defectuoasă a trasabilității pentru a efectua manevre ilicite!

Evoluția datelor

SQL Server are două moduri care vă permit să urmăriți automat evoluția datelor (INSERT, UPDATE, DELETE ...):

  • MODIFICAREA URMĂRĂRII: disponibil din ediția standard, este posibil să se indice ce rânduri din care tabele s-au schimbat într-o perioadă de timp țintă și configurabilă.
  • CHANGE DATA CAPTURE (CDC): disponibil în ediția Enterprise, copiază informațiile de actualizare în tabelele de lucru cu indicarea datei și orei modificărilor efectuate.

CHANGE TRACKING forțează scanarea tabelelor în baza de date, dar ameliorează volumul general, în timp ce CDC nu interogă date de producție pentru a ușura blocarea.

Aceste două module sunt utilizate în general, fie unul, fie celălalt, pentru a furniza în mod diferențial depozite mari de date .

Spectacole

Cantitatea instrumentului este atât de abundentă încât mulți utilizatori le ignoră, căutând în altă parte în instrumentele terților - adesea plătite - pentru ceea ce au deja și gratuit la îndemână.

Vizualizare gestionare date (DMV)

Acestea sunt date de sistem care prezintă statistici de execuție a motorului SQL care pot fi utilizate sub formă de tabelă de pseudo-vizualizări (de fapt, de cele mai multe ori funcțiile interne returnează o stare tabulară a datelor colectate în memorie). Acest lucru face posibilă stabilirea diferitelor diagnostice, cum ar fi:

  • timpi de așteptare: sys.dm_os_wait_stats
  • activitatea curentă în server: sys.dm_exec_connections, sys.dm_exec_sessions, sys.dm_exec_requests;
  • utilizarea și fragmentarea indexurilor: sys.dm_db_index_usage_stats, sys.dm_db_index_operational_stats, sys.dm_db_index_physical_stats;
  • indicii lipsă estimate: sys.dm_db_missing_index_details, sys.dm_db_missing_index_groups, sys.dm_db_missing_index_group_stats;
  • cea mai scumpă procesare: sys.dm_exec_query_stats, sys.dm_exec_procedure_stats, sys.dm_exec_trigger_stats;
  • tranzacțiile (și corolarul lor blocările): sys.dm_os_tran_ * (mai mult de 10 DMV) ...
  • gestionarea cache-ului: sys.dm_os_memory_ * (mai mult de 10 DMV) ...
  • gestionarea fișierelor: sys.dm_db_file_space_usage, sys.dm_db_log_space_usage, sys.dm_io_virtual_file_stats, sys.dm_os_volume_stats ...
  • firele: sys.dm_os_threads, sys.dm_os_tasks, sys.dm_os_workers, sys.dm_os_dispatcher_pools, sys.dm_os_nodes ...
Rapoarte

Pe baza DMV, rapoartele exploatează și prezintă datele într-un mod sintetic. Acestea sunt disponibile la diferite niveluri ale arborelui Explorator de obiecte SQL Server Management Studio, în principal la nivel de server (instanță) și bază.

Contoare de performanță

SQL Server publică numeroase contoare de performanță care pot fi interogate direct în SQL sau care pot fi analizate folosind monitorul de performanță (perfmon.exe). Aceste contoare sunt lizibile în vizualizarea sys.dm_os_performance_counters.

Alerte

SQL Server vă permite să configurați alerte cu privire la erori sau valori care trec printr-un prag prin SQL Agent prin interogarea datelor contorului de performanță sau prin WMI (Windows Management Instrumentation). Acest tip de alertă permite, de exemplu, să fie informat prin e-mail cu privire la saturația jurnalelor de tranzacții sau la umplerea discurilor serverului.

Consilier pentru reglarea motorului bazei de date

Acest instrument este utilizat pentru a efectua un diagnostic de indexare, statistici, partiționare sau crearea de vizualizări indexate atunci când este furnizat cu un lot de interogări.

Profilarea SQL

Profilatorul SQL vă permite să detectați interogări înainte și după executare pentru a furniza valori în scopuri de analiză în primul rând pentru a îmbunătăți performanța (deși există un mod „depreciat” pentru a vizualiza codul învechit din unele aplicații).

Aceste date sunt salvate într-un tabel sau într-un fișier (transferabil într-un tabel) și trebuie apoi analizate. Diferite șabloane permit niveluri mai mari sau mai mici de finețe de scanare.

Șablonul „reluare” face posibilă captarea unei încărcări și a valorilor sale care pot fi redate în aceleași condiții (simulare a diferiților utilizatori în paralel) în scopuri de benchmarking, în special pentru modificări în versiunile SQL Server, ca și în hardware. Pentru a reda și a compara, trebuie să utilizați pachetul RML disponibil gratuit pe site-ul Microsoft.

Evenimente extinse (XE: eXtended Events)

Ca o completare și înlocuire viitoare a profilerului, XE permite o intruziune mai profundă decât profilerul, deoarece poate scana aproape toate valorile operațiunilor din memorie, în fire sau în IO-urile de disc (la nivel de sistem). Aceasta se adaugă la ceea ce face deja profilerul.

Colector de date

Deoarece datele DMV-urilor sunt, în principiu, volatile (existente doar în memorie, se pierd la fiecare repornire) sau limitate (într-un inel de memorie) s-a decis crearea acestui instrument care înregistrează ciclic date diferite din diferite surse. DMV) în scop de feedback prin rapoarte specifice. Pentru a face acest lucru, trebuie creată o bază de date de colecție și trebuie să lansați diferiții colecționari predefiniți sau să vă creați colecționarii.

Reluare distribuită

Acest dispozitiv face posibilă redarea activității unui server capturat de o urmă a SQL Profiler, prin simularea unei activități apropiate de realitate, prin distribuirea cererilor pe diferite stații de lucru, toate orchestrate de un controler. Scopul este, de exemplu, să compare conformitatea cu execuția unei aplicații pe o nouă versiune de SQL Server sau în timpul unei schimbări de mașină (îmbunătățirea performanței).

Operațiune

Microsoft SQL Server oferă mai multe funcții:

Limbi

Pentru interogări, SQL Server folosește limbajul SQL într-unul dintre dialectele cele mai compatibile cu SQL, Microsoft făcându-i un punct de onoare să corecteze de la versiune la versiune unele erori anterioare moștenite de la motorul Sybase. Dialectul utilizat este T-SQL (Transact-SQL), un SQL de implementare care acceptă proceduri stocate, funcții definite de utilizator sau UDF-uri (Funcție definită de utilizator) și declanșatoare ( declanșator ). Limbajele XQuery și XPath sunt utilizate la diferite niveluri pentru a manipula date XML în cadrul interogărilor SQL.

Pentru transferurile de date, SQL Server utilizează formatul TDS (Tabular Data Stream) care a fost implementat în alte baze de date (în special în omologul său Sybase ) și ale căror specificații sunt publice. O implementare open source a unui client TDS este disponibilă și stă la baza clientului SQL Server pentru proiectul Mono  : FreeTDS .

SQL Server fiind echipat cu două motoare de baze de date, unul relațional și celălalt decizional, este posibil să se facă interogări în limbaj MDX sau DMX specific analizei datelor pentru bazele de decizie.

Limbajele R și Python au fost integrate de la versiunea 2016. Este, de asemenea, posibil să se dezvolte rutine SQL (UDF, proceduri, declanșatoare) folosind un limbaj .net, cum ar fi VB pentru .net sau C #.

Legături de integritate

În motorul relațional SQL Server, este posibil să se definească legăturile între tabele prin constrângeri declarative pentru a garanta puternic integritatea datelor între tabelul de referință și tabelul copil. Aceste legături de integritate pot fi utilizate pentru a modifica sau șterge liniile legate în lanț și pentru a sprijini regulile de evoluție de tipul NO ACTION, CASCADE, SET DEFAULT și SET NULL.

Tranzacții

SQL Server este un SGBD tranzacțional. Este capabil să pregătească modificări ale datelor unei baze de date și să le valideze sau să le anuleze atomic, adică în „totul sau nimic”. Acest lucru garantează coerența și integritatea informațiilor stocate în baza de date. În timpul unei tranzacții, seturile de date care conțin rândurile de date modificate de această tranzacție sunt blocate. Ceilalți utilizatori trebuie să aștepte sfârșitul tranzacției pentru a le putea modifica din nou. Pe de altă parte, utilizatorii concurenți pot opțional citi datele, chiar dacă acestea au fost blocate pentru modificare de către o altă tranzacție, în funcție de nivelul de izolare ales.

Nivel de izolare și blocare

Blocările se efectuează la nivel de rând, pagină, extensie, tabel sau bază de date. SQL Server blochează doar resursele de care are nevoie (rânduri în mod implicit) și, după caz, se poate bloca la un nivel superior (partiție sau tabel). Acest lucru elimină necesitatea ca utilizatorii să aștepte sfârșitul unei tranzacții pentru a actualiza rândurile de date care nu au fost afectate de o modificare și ajută la reducerea cantității de resurse consumate. Blocarea poate fi pesimistă - utilizatorii concurenți nu vor putea accesa rândurile din această tranzacție - sau optimist - caz în care utilizatorii concurenți vor putea accesa cea mai recentă versiune a rândurilor.

Pentru ca acest lucru să funcționeze, SQL Server vă permite să controlați nivelul de izolare în șase moduri diferite. Cele 4 niveluri prevăzute de standardul SQL

  • CITIȚI NECOMITAT
  • CITIȚI ANGAJATE
  • CITIȚI REPETABIL
  • SERIALIZABIL

... care se bazează pe blocarea pesimistă și pe două niveluri „optimiste”:

  • INSTANTANEU
  • CITIȚI SNAPSHOT COMITETAT

Deoarece nivelul de izolare este dinamic, se poate modifica în timpul aceleiași tranzacții. Nivelul de izolare READ COMMITTED SNAPSHOT funcționează la fel ca Oracle sau PostGreSQL prin suprascrierea nivelului de izolare READ COMMITTED cu versiuni de rânduri pentru blocare optimistă.

Înregistrarea tranzacțiilor

SQL Server vă permite să jucați tranzacții în trei moduri diferite:

  • validare automată: validare sau anulare imediată (în caz de eroare) a fiecărei comenzi SQL lansate (implicit);
  • modul implicit: conexiunea începe o tranzacție și finalizarea (manualul COMMIT sau ROLLBACK) încheie tranzacția pentru a începe una nouă (SET IMPLICIT_TRANSACTIONS ON);
  • mod explicit: inițializarea unei tranzacții trebuie făcută de comanda BEGIN TRANSACTION.

Spre deosebire de Oracle sau PostGreSQL, SQL Server efectuează chiar comenzi DDL (CREATE, ALTER, DROP ...) și DCL (GRANT, REVOKE ...).

Este posibil să se definească punctele de control ale tranzacției (comanda SAVE TRANSACTION) pentru a permite o anulare parțială (ROLLBACK ...).

Tranzacțiile sunt înregistrate în jurnalul de tranzacții („Jurnal REDO”), modificările de date sunt disponibile imediat în memorie și vor fi scrise în fișierele de date în timpul punctelor de control lansate periodic și asincron. Cu toate acestea, este posibil să forțați un punct de control folosind instrucțiunea CHECKPOINT.

Jurnalul tranzacțiilor înregistrează datele în mod diferit și face acest lucru în trei moduri diferite:

  • Mod complet: toate modificările sunt înregistrate în jurnal. Tranzacțiile finalizate cu date scrise pe disc vor fi șterse din jurnalul de tranzacții în timpul copiilor de rezervă tranzacționale.
  • Mod de înregistrare în bloc (BULK LOGGED): înregistrează minim operații reproductibile (de exemplu, inserarea datelor de fișiere, construirea indexurilor etc.). Acest mod face posibilă accelerarea funcționării jurnalului. Dar, ca și în modul complet, jurnalul va trebui curățat printr-o copie de rezervă tranzacțională.
  • Mod simplu: Mod similar modului jurnal în bloc, cu excepția faptului că jurnalul este purjat automat la fiecare punct de control.

În modurile jurnal complet și în bloc, jurnalul tranzacțiilor trebuie salvat periodic („jurnal REDO”), altfel va crește la nesfârșit. Și datorită backupului tranzacțional, este posibilă restaurarea bazei de date așa cum a fost în orice moment în cea mai apropiată secundă sau în cea mai apropiată tranzacție (cu unele limite însă pentru modul jurnal în bloc).

Este posibil să se cuibărească tranzacțiile, dar din moment ce conceptul de tranzacție este o stare a tranzacției, nu este posibil să se facă anulări parțiale în acest fel. Cu toate acestea, există și alte modalități de a păstra unele date din restabilirea tranzacției, inclusiv prin variabile de tabel.

SQL Server acceptă tranzacții distribuite prin Database Transaction Coordinator (DTC) care implementează „commit în două faze” conform modelului XA.

Dosare

Bazele de date sunt conținute fizic în fișiere. Fișierele au de obicei extensiile:

  • MDF (Main Database File) pentru primul fișier de date, inclusiv câteva pagini tehnice vitale, inclusiv structura de stocare a bazei de date
  • NDF (Next Database File) pentru alte fișiere de date
  • LDF (Log Database File) pentru fișierele jurnal de tranzacții

Fișierele sunt împărțite în blocuri de 8196 octeți numite pagini și organizate în seturi de 8 pagini consecutive numite extensii. Până la versiunea 2000, rândurile erau limitate la o dimensiune maximă de 8060 octeți (coloanele de tip LOB (imagine, text, ntext) nu sunt luate în considerare pentru această limită). De la versiunea din 2005, este posibil să depășești cu mult această limită și să mergi până la 2 miliarde de octeți. Pe de altă parte, dimensiunea utilă a paginii este de 8096 octeți .

Bazele de date pot funcționa numai atunci când toate fișierele sunt prezente, dar citirea este posibilă în timpul restaurării, prin conceptul de restaurare parțială.

Fișierele de date sunt grupate logic împreună în baza de date în grupuri de fișiere care constituie destinația obiectelor bazei de date (tabel, index etc.) Un grup de fișiere este considerat unitatea de stocare a oricărui tabel sau index și dacă acest lucru grupul conține mai multe fișiere, apoi SQL Server distribuie datele în toate fișierele (echivalent cu un RAID 0), operațiile de citire și scriere fiind efectuate în paralel în diferite fișiere, sub controlul direct al stocării motorului SQL Server. Aceste fișiere și grupuri de fișiere pot fi salvate independent chiar dacă există o interdependență logică între obiectele unui fișier și altul (în special integritatea referențială).

Securitate

Datorită aspectului său multibase, SQL Server are două niveluri de securitate: la nivel de server, prin conturi de logare și la nivel de bază, prin utilizatori SQL.

Începând cu versiunea 2005, au avut loc modificări semnificative de securitate în politica SQL Server.

În plus, strategia de securitate acoperă și funcționalitatea serverului. De exemplu, procedura stocată xp_cmdshell pentru lansarea comenzilor de sistem este dezactivată și numai DBA o poate reactiva. La fel, de îndată ce serverul este deschis, toate fișierele tuturor bazelor de date sunt blocate pentru citire și scriere pentru a preveni orice acces nedorit.

Conturi de servicii

Serviciile care rulează fiecare instanță a SQL Server utilizează un cont de serviciu (contul de sistem pentru rularea serviciului Windows). Acesta din urmă trebuie ales cu grijă pentru a evita posibilele încălcări ale securității pe server. Acesta poate fi: Serviciu de sistem, Serviciu local (din Windows 2003), Serviciu de rețea (din Windows 2003), cont de utilizator Windows local, cont de utilizator de domeniu. Este recomandat să blocați permisiunile pentru conturile de servicii. În acest sens și începând cu versiunea 2012, conturile specifice cu autorizații foarte limitate sunt create în timpul instalării pentru fiecare dintre serviciile SQL Server (SQL Server, SQL Agent, SSAS, SSIS, SSRS etc.).

Conturi de autentificare

Contul de conexiune este utilizat pentru a vă conecta la o instanță din SQL Server. Pentru aceste conturi, trebuie definite privilegiile care se aplică la nivel de server. Privilegiul minim fiind privilegiul „CONECTARE”. Un exemplu de privilegiu la nivel de server este posibilitatea de a crea orice bază de date. În acest caz, este privilegiul CREAȚI ORICE BAZĂ DE DATE.

SQL Server se bazează implicit pe sistemul de autentificare Windows ( Kerberos sau Native) care permite accesul la o instanță SQL Server printr-un grup Windows sau un utilizator Windows. La conectarea la baza de date, utilizatorul este identificat prin datele sale de conectare la Windows. Prin urmare, nu trebuie să-și dea parola în timpul fazei de autentificare a serverului.

Deoarece există cazuri în care utilizatorul nu poate fi identificat prin datele sale de conectare Windows (utilizarea GNU / Linux, a unei pagini Web ...) se poate implementa o metodă directă de identificare către SQL Server. Acesta trebuie făcut în mod explicit de către administratorul instanței. Aceasta presupune crearea unui nume de cont SQL și a unei parole, iar pentru aceasta din urmă se poate modela politica de conformare a parolei pe cea din Windows.

Când accesează o resursă externă, procesul SQL Server acționează în 3 moduri diferite: prin suplinire atunci când stratul Windows este configurat corect, utilizatorul poate accesa resurse numai prin SQL Server. La care ar avea dreptul dacă ar avea acces direct; de către contul de serviciu al instanței, când utilizatorul este sysadmin și pentru anumite sarcini; nu permite accesul, în toate celelalte cazuri. În cazul conturilor de conectare SQL și pentru accesul la o resursă externă (de exemplu, trimiterea unui fax într-o procedură stocată) SQL Server adaugă posibilitatea de a crea informații de conectare care sunt conturi Windows înregistrate în acest scop. Prin urmare, utilizatorii SQL pot fi asociați cu aceste conturi Windows pentru acces la resurse externe.

Utilizator SQL

Un cont de conectare poate fi mapat la un utilizator SQL fie într-o anumită bază de date, fie în mai multe sau toate. Numele contului de autentificare și numele de utilizator pot fi diferite (și este mai bine să fie). Unui utilizator SQL dintr-o bază de date i se pot acorda privilegii care îi permit să lanseze diferite comenzi pe diferite obiecte. Privilegiile pot fi stabilite direct pe un obiect al bazei de date sau pe un „container”, cum ar fi schema SQL sau întreaga bază de date.

Exemplu de acordare a diferitelor privilegii la nivel de schemă SQL unui utilizator numit USR_BANQUE:

GRANT SELECT, INSERT, UPDATE, EXECUTE ON SCHEMA::FINANCE TO USR_BANQUE; Roluri

SQL Server are roluri prestabilite la nivel de server, precum și la nivel de bază. Este chiar posibil să vă creați propriile roluri (noi pentru nivelul serverului din 2012). Un rol fiind o colecție de privilegii atribuibile unui cont de conexiune la nivel de server sau unui utilizator SQL atunci când acest rol a fost creat pentru o anumită bază de date.

Schema SQL

O schemă fiind un container de obiecte într-o bază de date, SQL Server vă permite să definiți cât de multe scheme SQL doriți, pentru a organiza diferitele obiecte din baza de date și mai ales pentru a gestiona securitatea la nivelul schemei într-un mod proactiv. Astfel, crearea de obiecte noi, dacă aceste obiecte sunt plasate în diagrame corecte, automatizează implementarea securității prin moștenire. Prin urmare, nu există nicio comandă de orice fel care să treacă din punct de vedere al gestionării privilegiilor, astfel încât securitatea să fie aplicată imediat.

În cele din urmă, și spre deosebire de unele RDBMS (Oracle de exemplu), nu există confidențialitate sau confuzie între o schemă SQL și proprietarul acesteia (utilizatorul care a creat-o) care, de exemplu, facilitează foarte mult migrarea unui obiect de la o diagramă la alta și garantează o securitate mai bună.

Exemplu de migrare a unei tabele de la o schemă SQL la alta:

ALTER SCHEMA BANQUE TRANSFER dbo.T_CLIENT; Criptare

SQL Server permite criptarea datelor tabelelor prin diferiți algoritmi încorporați în SQL Server. Cheile și certificatele de criptare pot fi importate dintr-un fișier extern sau direct create în baza de date, SQL Server fiind propria autoritate de certificare. Cu toate acestea, există o a treia posibilitate care constă în utilizarea unei cutii electronice pentru generarea și păstrarea cheilor numite HSM ( Hardware Security Module ), menite să garanteze inviolabilitatea cheilor. Aceste dispozitive electronice sunt plasate în rețea și se autodistrug în caz de tentativă de acces ilegal, fizic sau logic.

O copie de rezervă a bazei de date încorporează toate cheile și certificatele pentru a asigura criptarea și decriptarea. Dar restaurarea unei baze de date pe un server diferit de cel original necesită decriptare urmată de recriptare. Elementele care compun arhitectura de criptare fiind interdependente unele de altele de o cheie secretă deținută la nivelul instanței. Cu toate acestea, pentru a continua cu criptarea sau decriptarea, este necesar să deschideți cheia fie având un certificat, fie oferind parola.

SQL Server vă permite să criptați datele din tabel sau să criptați codul rutinelor.

În cele din urmă, SQL Server permite stocarea datelor să fie criptată și să nu mai fie date prin TDE (Transparent Data Encryption). Fișierele (jurnalele de tranzacții, datele tabelelor și indexurile) sunt criptate atunci când sunt scrise fizic pe discuri și decriptate când sunt citite fizic de pe discuri în memorie. Datele sunt astfel afișate în memorie, ceea ce face posibilă menținerea performanței în timp ce criptează întreaga bază de date.

Versiunea 2016 a adăugat criptarea end-to-end, adică decriptarea controlată de server, se poate face la nivelul aplicației și nu mai este în baza de date.

Obiecte de baze de date

Mese

Tabelele sunt obiectele care conțin de fapt datele din baza de date. Sunt de două tipuri:

  1. Tabelele de sistem conțin informații care permit funcționarea corectă a bazei de date. În mod implicit în SQL Server 2000, acestea nu pot fi modificate. În SQL Server 2005 apar noi tabele de sistem, dar acestea nu sunt accesibile utilizatorilor. Pentru a putea accesa întotdeauna aceste informații, echipa de dezvoltare a adăugat un număr mare de vizualizări ale sistemului. Acestea înlocuiesc vechile tabele de sistem și unele comenzi DBCC. De asemenea, au fost adăugate un număr mare de vizualizări noi ale sistemului. În SQL Server, toate obiectele de sistem fac parte din schema sys și sunt stocate într-o bază de date numită SystemResource.
  2. În Tabelele de utilizator conțin date de utilizator.

Un tabel poate conține până la 30.000 de coloane a căror sumă de dimensiuni nu depășește 2 miliarde de octeți . Coloanele de tip BLOB (VARCHAR (max), NVARCHAR (max), VARBINARY (max)) fiind stocate în afara rândului.

Tabelele pot avea o cheie primară . Cheia primară este întotdeauna indexată . Alte constrângeri sunt disponibile și la nivel de tabel , cum ar fi: constrângeri unice (indexate automat), valori implicite, constrângeri de verificare, chei străine .

Vizualizări

O vizualizare este o interogare numită a bazei de date. Este interogat în același mod ca un tabel.

Datele returnate de vizualizare sunt reconstituite din datele conținute în tabele de fiecare dată când este apelată vizualizarea (cu excepția vizualizărilor indexate care stochează rezultatele). SQL Server înlocuiește numele vizualizărilor din interogarea care va fi executată cu definițiile lor, apoi interogarea rezultată este compilată, optimizată și executată de motor. Planul compilat al interogării astfel obținute este apoi stocat pentru a permite reutilizarea în timpul unui apel următor. Deoarece SQL Server are optimizare semantică în plus față de optimizarea statistică, ramurile îmbinărilor care nu sunt necesare pentru funcționarea unei vizualizări sunt tăiate sistematic pentru optimizare, atunci când este posibil.

În anumite condiții, este posibilă actualizarea valorilor într-o vizualizare. Exemple ale acestor condiții sunt:

  1. O vizualizare pe mai multe tabele poate modifica doar una dintre aceste tabele.
  2. Dacă vizualizarea conține funcții, utilizează „DISTINCT” sau „GROUP BY”, modificarea nu va funcționa.
  3. Nu trebuie să existe nicio transformare a datelor coloanei (operație, expresie, apel de funcție etc.)
  4. Vizualizarea are un declanșator de tip INSTEAD OF (în acest din urmă caz, logica de modificare este cea afișată în codul de declanșare).

SQL Server implementează tipuri speciale de vizualizări care sunt vizualizări partiționate și vizualizări indexate (echivalent cu vizualizările materializate sincrone Oracle).

Index

Indexarea în SQL este furnizată în patru moduri: indexare relațională, indexare verticală, indexare textuală și indexare specifică anumitor tipuri de obiecte.

Indexarea relațională

Se referă la conținutul complet al coloanelor. Mecanismul intern al acestor indici se bazează pe noțiunea de copac echilibrat (B-Tree).

Există două tipuri de indici  :

  1. Indici clusterizați (INDICE CLUSTERED)
  2. INDICE NECLUSIONATE

Nu poate exista decât un singur index grupat pe tabel, deoarece acest tip de index este de fapt un „sort” al tabelului. Rândurile tabelului sunt deci sortate logic în ordinea indexului grupat, ceea ce explică de ce nu poate exista decât unul. Cu alte cuvinte, indexul grupat fiind un arbore b , frunzele indexului sunt direct rândurile din tabel.

Un index non-grupat nu reflectă ordinea fizică a rândurilor din tabel.

Ambele tipuri de indexuri sunt construite dintr-o cheie , formată dintr-un număr de coloane. Acestea vă permit să găsiți rapid o bucată de date din toate sau dintr-o parte din coloanele acestei chei.

Astfel, dacă luăm în considerare o cheie (A, B, C), putem face căutări pe câmpurile (A), (A, B) și (A, B, C). Câmpurile sunt considerate în ordinea cheii; prin urmare, nu este posibil să faceți o căutare pe, de exemplu (B, C) sau (C) cu acest index. Pe de altă parte, o căutare pe (A, C) va beneficia cu ușurință de indexarea coloanei A.

Un tabel poate conține 999 de indici. Fiecare index poate conține 16 coloane a căror sumă a dimensiunilor nu depășește 900 de octeți . Indicii conțin, pe lângă datele coloanelor indexului, un marcaj către datele din tabel. Acesta poate fi fie un pointer către o linie, fie una dintre cheile indexului grupat (în engleză: clusterised index ).

Optimizatorul SQL Server alege ce index să utilizeze. Este posibil să nu utilizeze indexul pe care l-ați creat, deoarece costul căutării în acel index poate fi mai mare decât citirea întregului tabel. Pentru a face aceste alegeri, optimizatorul folosește, printre altele, statisticile tabelului și prezența sau absența constrângerilor. Cu toate acestea, este posibil să forțați optimizatorul să utilizeze un index cu clauza WITH (index_name), totuși această practică nu este recomandată.

Indicele este organizat în copac-b . Acest lucru permite clasificarea informațiilor mai rapid decât dacă ar trebui inserate într-un tabel secvențial. Deoarece acest aranjament este foarte mare în stocare, versiunea SQL Server din 2005 vă permite să separați datele de căutare și să prelucrați datele care sunt integrate în index.

SQL Server vă permite să creați coloane calculate, care, dacă sunt persistente (PERSISTATE), pot fi indexate.

Nu există altă structură de index decât arborele b . De exemplu, nu există un index bitmap , care ar facilita căutările pe câmpuri cu conținut puțin variat, dar este suficient să se creeze un tabel de referință pentru a simula un index bitmap. De asemenea, nu există un index hash. Dar doar creați o coloană hash calculată (funcția CHECKSUM) și indexați-o pentru a obține un efect similar. În cele din urmă, nu este posibil să creați un index pe expresie, ci doar să creați o coloană calculată cu o astfel de expresie și să o indexați pentru a obține același efect.

Indexare verticală

SQL Server vă permite să creați așa-numiți indici „verticali” (index columnstore) pe un set de coloane care să permită accesul la toate coloanele indexate pe același plan. De fapt, într-un index relațional cu mai multe coloane, ordinea fiecărei coloane din cheia index permite numai anumite combinații de căutări. Nu este cazul indexării verticale, care permite toate combinațiile de căutări. De exemplu, cu tasta (A, B, C), este posibil să căutați atât pe (A), (B) sau (C), dar și pe orice combinație de două sau trei coloane (A, B), ( B, A), (A, C), (C, A), (B, C), (C, B), (A, B, C), (A, C, B), (B, A, C), (B, C, A), (C, A, B), (C, B, A).

În versiunea 2012, acești indici sunt doar de citire și, prin urmare, sunt destinați în principal bazelor de date de tip DataWarehouse pentru business intelligence. În versiunea 2014, acești indici pot fi modificați.

Indexarea textuală și semantică

Indexarea textuală (de fapt un catalog de indexare) permite căutările în text clar („text complet”, conform standardului SQL cu predicatul CONTAINS) sau în modul Google folosind predicatul FREETEXT. Este permisă căutarea unor cuvinte diferite în același document (textul coloanelor unui tabel sau document electronic stocat într-un tabel) prin egalitate, început, proximitate, dar și prin formă flexionată (conjugare, plural, feminin etc.) , sinonimizare, extensie (în special pentru acronime) ... precum și cu greutăți relative (funcția de tabel CONTAINSTABLE și FREETEXTTABLE).

Indexarea textuală se poate referi la șiruri de caractere sau coloane de tip XML, dar și la fișiere electronice, indiferent dacă sunt stocate direct într-un tabel (într-un BLOB) sau ca fișier prin FILESTREAM sau într-un FILETABLE. SQL Server recunoaște mai mult de 50 de formate de fișiere în mod nativ și vă permite să adăugați multe alte tipuri de fișiere electronice folosind „ifilter”.

SQL Server acceptă majoritatea limbilor și permite căutări combinate multilingve. Pentru aceasta, pot fi stabilite liste de „cuvinte negre” pentru fiecare dintre limbile indexate. În plus, SQL Server indexează toate cuvintele fără excepție, inclusiv cuvintele negre, unde unele RDBMS sunt limitate la cuvinte cu o lungime minimă (MySQL de exemplu) sau exclud cuvintele negre (PostgreSQL de exemplu). În cele din urmă, dacă cazul nu este important pentru indexarea textuală, utilizatorul poate alege dacă dorește o indexare textuală luând în considerare sau nu caracterele diacritice, cum ar fi accentele sau ligaturile. Indexarea textului permite, de asemenea, căutarea metadatelor în fișiere electronice, de exemplu autorul unui fișier Word.

Cu versiunea 2012, SQL Server a adăugat indexare semantică care, așa cum sugerează și numele său, vă permite să faceți căutări semantice. Această funcționalitate necesită adăugarea unei baze de date de procesare semantică menită să stabilească statistici privind textele indexate. cercetarea semantică se concentrează pe semnificația documentelor. Aceasta permite extragerea automată a etichetelor, descoperirea conținutului aferent și navigarea ierarhică prin documente cu conținut similar textului de referință. Un exemplu practic este interogarea indexului de similaritate a documentelor pentru a identifica într-un lot de CV-uri, care se potrivesc cel mai bine cu descrierea postului.

Indexarea obiectelor

SQL Server permite indexarea anumitor tipuri de date ale obiectelor, cum ar fi XML (patru tipuri de indici) sau spațiale (tipuri geometrie și geografie ). Deoarece este posibil să adăugați propriile obiecte, cu condiția de a le descrie în formă .NET, este, de asemenea, posibil să le indexați, cu condiția să aranjați ca acestea să fie „  ordonate de octeți  ” în organizarea stocării lor.

Este posibil să definiți procedurile stocate codate în Transact-SQL , precum și în .NET (SQL CLR). O procedură stocată este o serie de instrucțiuni care pot modifica datele bazei de date și încapsula tranzacții și care returnează una sau mai multe valori.

Procedurile stocate în SQL Server pot lua ca parametri și / sau returnează numere întregi, șiruri de caractere, date, cursori, tabele, tabele virtuale și orice alt tip definit în SQL Server în mod implicit sau de către utilizatori.

Principalele avantaje ale utilizării procedurilor stocate sunt:

  • tranzacția de procesare complexă (mai multe tranzacții pot fi legate sau suprapuse)
  • securitate sporită (codul unei proceduri poate fi depersonalizat)
  • o mai bună reutilizare a planurilor compilate
  • capacitatea de a gestiona dependențele dintre codul SQL și obiectele motorului.

Declanșatoare

Declanșatorul este un cod stocat care execută după (DUPĂ) sau în locul (ÎN loc de) o anumită acțiune (introduceți, modificați, ștergeți) pe o masă sau vizualizare. Este posibil să codați câte declanșatoare DUPĂ doriți pe o singură acțiune (INSERT, UPDATE sau DELETE) din același tabel sau vizualizare. În cazul unei pluralități de declanșatori pe aceeași acțiune a aceleiași tabele, ordinea declanșatorilor este arbitrară, cu excepția primelor 3 care pot fi impuse. ÎN loc de declanșatoare trebuie să fie unice pentru fiecare eveniment / tabel.

Două tabele virtuale sunt create pentru a gestiona datele inserate, modificate sau șterse: inserate (pentru inserare și modificare) și șterse (pentru ștergere și modificare). Nu este posibil să modificați conținutul acestor tabele virtuale. În schimb, SQL Server vă permite să modificați tabelul țintă al declanșatorului, cum ar fi derularea înapoi a tranzacției implicite care a declanșat declanșarea prin derularea tranzacției (ROLLBACK).

Declanșatorul INSTEAD OF poate fi folosit atunci când se dorește interceptarea evenimentului, nu pentru a-l lăsa să se desfășoare, ci pentru a codifica o altă acțiune. Acest tip de declanșator poate fi utilizat, de exemplu, în contextul unei mapări relaționale / obiecte în care manipulăm vizualizări compuse din mai multe îmbinări în care dorim ca utilizatorul să poată face actualizări (INSERT, UPDATE, DELETE) direct pe aceste vizualizări. În acest caz, datele INSERT, UPDATE sau DELETE sunt împărțite pentru fiecare dintre mesele aflate în joc și o serie de comenzi specifice fiecărui tabel de afișat este lansată printr-o tranzacție.

De la SQL Server 2005, a fost adăugată capacitatea de a crea declanșatoare DDL. Aceste declanșatoare DDL acționează după apariția evenimentelor de tip CREATE, ALTER sau DROP, iar aceste evenimente pot fi surprinse la nivel de server (de exemplu, CREATE DATABASE) sau la nivelul bazei de date (de exemplu, un TABLE DROP). Pentru a obține detalii despre evenimentul interceptat, un pachet de date XML (obținut prin funcția EVENTDATA ()) oferă mai multe detalii despre originea și natura evenimentului. Există chiar și interogarea SQL care a declanșat-o.

Un anumit tip de declanșator este utilizat pentru a intercepta conexiunile la server (pentru declanșatorul LOGON).

Funcții (UDF: Funcție definită de utilizator)

De la SQL Server 2000, este posibil să creați funcții în Transact SQL și din 2005 în .net (SQL CLR).

Aceste funcții sunt de 3 tipuri:

  • Scalar: Mai multe instrucțiuni returnează apoi o valoare de tip simplu
  • Tabel cu mai multe instrucțiuni: mai multe instrucțiuni apoi returnează un tabel
  • Tabel online (vizualizare parametrizată): o instrucțiune de tip SELECT returnează un tabel

Cu toate acestea, există restricții privind funcționalitatea care poate fi utilizată în corpul unei funcții. Nu este posibil să se utilizeze funcții nedeterministe, iar funcția nu trebuie să modifice datele sau parametrii sistemului permanent sau permanent. Acest lucru interzice, de exemplu, utilizarea unui INSERT pe o masă sau utilizarea funcției GETDATE ().

SQL Server 2005 a adăugat:

  • posibilitatea de a crea funcții de agregare (calcul statistic) prin CLR, adică codificarea utilizând un limbaj al platformei .net;
  • funcții specifice legate de partiționarea datelor (PARTITION FUNCTION).

Spre deosebire de o procedură stocată, o funcție nu poate conține:

  • comanda care determină limitele unei tranzacții (BEGIN TRANSACTION, COMMIT, ROLLBACK)
  • ordinea de actualizare a datelor (INSERT, UPDATE, DELETE, SELECT), cu excepția funcțiilor tabelului cu mai multe instrucțiuni și numai pentru tabelul de returnare.
  • cod nedeterminist (bariera ridicată parțial cu SQL Server 2005, funcții precum GETDATE fiind permise, dar RAND este încă interzis)
  • SQL dinamic
  • cursor
  • un apel de procedură stocată

Acest lucru are sens, deoarece scopul unei funcții este mai ales să fie utilizat în cadrul unei interogări.

Funcțiile tabelului în linie, acționând ca vederi parametrizate, pot actualiza tabelele subiacente.

Aspecte de obiect

De la versiunea 2005, SQL Server încorporează aspecte de obiect, inclusiv:

  • posibilitatea de a realiza tipuri complexe structurate printr-un limbaj extern precum .net și de a le folosi atât ca o coloană de tabel, cât și ca tip de variabilă într-o rutină (procedură, declanșator sau funcție).
  • Tip XML căutabil prin XQuery / XPath și indexabil. Server SQL care integrează un analizor XML și proceduri pentru gestionarea fluxurilor XML.
  • posibilitatea de a genera un flux XML din rezultatul unei interogări SELECT în loc de un „set de date”.
  • tipul hierarchyId (apărut în versiunea 2008) facilitând structurarea datelor ierarhice (copaci).
  • un GIS real (Geographic Information System - apărut în versiunea 2008) odată cu sosirea tipurilor de GEOMETRIE și GEOGRAFIE la standardul OGC cu interfață sub formă de WKT (text bine cunoscut) sau WKB (binar bine cunoscut) și echipat cu multe metode de manipulare.
  • implementarea serviciilor Web care pot fi create direct în RDBMS.
  • stocarea fișierelor sub responsabilitatea exclusivă sau parțială a RDBMS (FILESTREAM) și manipularea tranzacțională a acestora, permițând o copie de rezervă coerentă a datelor relaționale și nerelationale (foarte utilă pentru un EDM, de exemplu) - @ Din 2008.
  • reprezentarea transparentă sub formă de tabele (FILETABLE) a arborilor de stocare a fișierelor din sistemul de operare Windows (directoare și fișiere) și manipularea acestora prin interogări SQL - din 2012.

Instrumente

SQL Server Management Studio (SSMS)

Acest instrument este inclus cu versiunile plătite ale SQL Server. Vă permite să conectați și să administrați diferitele motoare SQL Server (SSRS, SSIS, SSAS și motorul relațional). Permite motorului relațional să dezvolte scripturi TSQL, cu posibilitatea de a le grupa pe toate într-o soluție (ca în Visual Studio). Acestea pot fi, de asemenea, salvate folosind Visual SourceSafe sau Team Foundation Server. Pentru versiunea Express (gratuită), instrumentul simplificat SQL Server Management Studio Express Edition (SSMSE) este disponibil gratuit.

Înainte de 2005 acest instrument a fost separat în două module numite „Enterprise Manager” și „Query Analyzer”.

Instrumente de date SQL Server Business Intelligence Development Studio / SQL Server

La fel ca SSMS, acest instrument vine cu versiuni plătite ale SQL Server. Este o suprapunere a instrumentului generic de dezvoltare Microsoft Visual Studio potrivit pentru crearea de proiecte BI (Analysis Services, Integration Services sau Reporting Services). Toate aceste proiecte pot fi găsite în grupul „Business Intelligence Projects”.

Profiler (generator de profil)

Acest instrument vă permite să capturați activitatea unei baze de date. Permite administratorilor să verifice articolele care necesită mult timp și interogările din baza de date. Opțional, este posibil să redați captura pe un server de testare. Tinde să fie înlocuit treptat de sistemul „evenimentelor extinse” (Evenimente extinse).

Servicii și motoare

De fapt, MS SQL Server este o suită formată din cinci servicii principale:

  • Motorul relațional (OLTP) numit SQL Server;
  • Motorul de luare a deciziilor (OLAP) numit SSAS ( SQL Server Analysis Services ) incluzând un motor de stocare pentru cuburi, algoritmi de forare ( data mining ) și diverse instrumente BI (Business Intelligence);
  • Un ETL (Extract Transform and Load) numit SSIS (SQL Server Integration Services) destinat configurării logicii fluxului de date, în special pentru furnizarea de depozite de date ;
  • Un instrument de generare a rapoartelor numit SSRS (SQL Server Reporting Services) care face posibilă producerea de rapoarte în diferite forme și utilizarea resurselor motorului de luare a deciziilor (bazele de date „resportServer ...”) atât pentru stocarea rapoartelor, cât și pentru ascunderea acestora date pentru a face „încălzire”;
  • Un sistem de planificare și gestionare a alertelor, numit Agent SQL, care folosește și serviciile motorului SQL (bază msdb).

Alte servicii sunt asociate acestuia pentru anumite nevoi:

  • SQL Full-Text Filter Daemon launcher  : pentru a încărca anumite documente externe (tezaur și filtru dll) necesare pentru căutarea „text simplu”
  • SQL Browser  : Serviciu de livrare a serviciilor SQL destinat să faciliteze căutarea serviciilor SQL în rețea
  • MS DTC (Data Transaction Coordinator): coordonator de tranzacții distribuite, utilizat pentru actualizări de comitere în două faze (2PC) combinând diferite servere tranzacționale, nu neapărat din lumea Microsoft ( XA , X / Open , TIP, WS ...)

SQL Server include, de asemenea, multe instrumente de dezvoltare:

  • pentru baze de date tranzacționale, prin SQL Server Management Studio (SSMS)
  • pentru baze decizionale, data mining, raportare și ETL, printr-o suprapunere a Visual Studio numită BIDS ( Business Intelligence Development Studio ), apoi SQL Server Data Tools din versiunea 2012.

Peste o sută de instrumente periferice sunt disponibile, fie în timpul instalării (SQL Profiler, Database Tuning Advisor, Data Collector etc.), fie direct pe site-ul Microsoft (SQLdiag, SQLioSim, SQL Server Best Practices Analyzer ...), sau prin site-ul comunității Codeplex opensource (RML Utilities, PAL, Open DBDiff ...).

O instanță a SQL Server este o instalare a unora sau a tuturor serviciilor SQL Server pe o mașină Windows și poate găzdui multe baze de date. Același sistem de operare care acceptă până la 50 de instanțe diferite (ceea ce nu este recomandat în producție).

SQL Server 2014 nu este limitat ca număr de nuclee sau RAM, doar de capacitatea Windows. O bază de date este limitată la 524 de octeți peta (Po), dar întrucât SQL Server poate găzdui mai multe baze de date și 32760 baze în aceeași instanță, capacitatea totală a sistemului poate gestiona teoretic datele Po 17166240  . Cu 50 de instanțe pe aceeași mașină, această limită teoretică este împinsă înapoi la 858 312 000  Po ...

SQL Server există în diferite ediții: CE (Compact Edition - soluție încorporată pentru smartphone-uri), Express (mai multe versiuni - gratuit), Web (în modul SPLA: Contract de licență a furnizorului de servicii - cu gazde web), Standard, BI și Enterprise - acest lucru pentru producție. Ediția Developper (echivalentă cu ediția Enterprise) este destinată dezvoltării.

SQL Server

Acesta este motorul bazei de date. Fiecare instanță a SQL Server are un serviciu Windows Sql Server corespunzător. Acest serviciu poate fi găsit în serviciile Windows sub numele MSSQL $ Instance_name pentru instanțele denumite și MSSQLServer pentru instanța implicită.

Fiecare instanță creată are inițial 4 până la 6 baze de date de sistem. Motorul SQL Server se bazează pe baza de date de sistem master , care conține definiția celorlalte baze de date.

Celelalte baze de sistem sunt:

  • msdb  : utilizat de agentul SQL Server, replicare , servicii de transformare a datelor, servicii de integrare ...
  • model  : folosit ca model pentru a crea noi baze de date. Orice bază de date nouă este o copie a acesteia.
  • tempdb  : Baza de date temporară, este utilizată pentru a stoca date temporare create de utilizatori sau generate de cursori, creații de indexuri, în timpul unei sortări mari. Pe SQL Server 2005, conține, de asemenea, versiuni de înregistrare generate de nivelurile de izolare SNAPSHOT, conținutul pseudo tabelelor inserate și șterse utilizate în declanșatoare și cele generate de operații de indexare în linie. Această bază de date de sistem este golită sistematic la pornirea serviciului SQL Server.
  • distribuție  : Prezent doar în contextul unei replicări, dacă serverul dvs. joacă rolul distribuitorului.
  • mssqlsystemresource  : Prezent doar de la SQL Server 2005. Nu este accesibil direct și conține toate obiectele de sistem (cu excepția tabelelor).

Agent SQL Server

Acesta este agentul de întreținere pentru instanța SQL Server. Fiecare instanță a SQL Server are un serviciu corespunzător Windows Sql Server Agent. Acest serviciu poate fi găsit în serviciile Windows sub numele SQLAgent $ InstanceName pentru instanțele denumite și SQLAgent pentru instanța implicită. Motorul SQL Server Agent se bazează pe baza de date msdb . Acest motor este utilizat pentru a gestiona copiile de rezervă, planurile de întreținere, lucrările programate, monitorizarea bazei de date, alertele administrative ...

Agentul are, de asemenea, rolul de a monitoriza serviciul SQL Server și de a declanșa automat repornirea acestuia în cazul unei opriri neașteptate.

Căutare text integral

Index complet / motor de căutare.

Coordonator tranzacții distribuite

De asemenea, cunoscut sub numele de MS DTC, este utilizat pentru gestionarea tranzacțiilor distribuite. Adică, tranzacții între mai multe servere de tranzacții SQL Server, între un SQL Server și alte servere de baze de date, între mai multe surse de date diferite, indiferent dacă acestea sunt motoare de baze de date sau componente simple.

Servicii de notificare

Serviciul apărut în SQL Server 2000 face posibilă interogarea regulată a bazei de date și, în funcție de aceste solicitări, notificarea grupurilor abonate la aceste evenimente. Acest serviciu nu mai este furnizat ca standard de la SQL Server 2008. SQL Server, denumit în cod Denali, aduce totuși funcționalități similare în SQL Server Reporting Services și Sharepoint 2010, cunoscut sub numele de Alerting.

Luarea deciziilor

Platforma de informații de afaceri SQL Server constă dintr-un ETL , care a apărut cu SQL 7, un motor multidimensional, a apărut și cu SQL 7 și un motor de raportare, adăugat în 2004 sub SQL 2000. Cu versiunea SQL Server 2005, un studio de dezvoltare pentru business intelligence a fost integrat în Visual Studio 2005: BI development Studio.

Cartografiere

SQL Server 2008 acceptă un nou tip de date primitive: tipul geografic în care are loc proiecția (latitudini și longitudini) și tipul geometric fără proiecție pentru a manipula date legate de puncte, linii și poligoane. Primul software care acceptă SQL Server este software-ul Manifold System  (en) și MapInfo, GeoMedia.

Servicii de integrare (SSIS: Servicii de integrare SQL Server)

Un serviciu care a apărut în SQL Server 2005, este înlocuitorul Serviciilor de transformare a datelor (DTS). ETL a fost complet reconstruit, și concurează cu alte instrumente ETL profesionale de pe piață.

Obiectivul este integrarea companiei prin intermediul datelor sale. SQL Server Integration Services (SSIS) este o platformă completă de integrare a datelor. SSIS, nu este un simplu ETL. Este o platformă completă de integrare a datelor, oferind o serie de instrumente de dezvoltare și gestionare grafică, servicii, obiecte programabile și API-uri (Interfețe de programare a aplicațiilor). SSIS conține un motor de flux de lucru care acceptă logica complexă și poate fi utilizat pentru o mare varietate de operațiuni de întreținere a bazelor de date și operațiuni sofisticate de transfer de date. Arhitectura SSIS este alcătuită în principal din două părți: motorul de runtime al transformării datelor, care gestionează fluxul de control al unui pachet, și motorul fluxului de date sau motorul conductei de transformare a datelor, care gestionează fluxul de date din sursele de date, prin transformări, și către țintele de destinație.

Servicii de analiză

SQL Server Analysis Services (SSAS) este un serviciu care a apărut în SQL Server 7, cunoscut la acel moment sub numele de Servicii OLAP . Vă permite să generați cuburi OLAP , date agregate și multidimensionale. De asemenea, face posibilă implementarea algoritmilor de Data Mining .

Servicii de raportare

Acest serviciu, care a apărut în SQL Server 2000, este un motor de generare de rapoarte. Două servicii web îl compun, unul permițând administrarea acestuia, celălalt generarea, abonamentul, redarea rapoartelor. Redările sunt realizate în Excel, PDF, HTML și Word (de la versiunea 2008).

Ediții

Ediția Datacenter

Apărut cu SQL Server 2008 R2, va suporta până la 256 de procesoare logice, precum și virtualizare nelimitată și o cantitate nelimitată de memorie.

Enterprise Edition

Suportă un număr nelimitat de procesoare și dimensiunea RAM (limitată de sistemul de operare). Există o versiune pe 32 de biți (x86) și 2 versiuni pe 64 de biți (ia64 și x64, x64 numai pentru SQL Server 2005) și nu are nicio limită pentru dimensiunea bazelor de date. Poate fi instalat numai pe o versiune de server Windows . Include toate caracteristicile motorului, inclusiv caracteristici de înaltă disponibilitate. Funcționalitățile pentru business intelligence sunt toate incluse de la generarea de rapoarte cu Reporting Services până la utilizarea cuburilor OLAP cu Analysis Services la transferul de date cu Integration Services (SQL Server 2005) sau Data Transformation Services (SQL Server 7) și 2000) . Poate funcționa și într-un cluster de până la 8 noduri.

Ediția pentru dezvoltatori

Aceasta este o ediție pentru dezvoltatori care are aceeași funcționalitate ca și ediția Enterprise. Cu toate acestea, licența conține restricții privind utilizarea sa. Licența interzice funcționarea în producție. Este destinat exclusiv utilizării testate. Cu toate acestea, nu există restricții cu privire la produsele disponibile.

Editie Standard

Suportă până la 4 procesoare și o dimensiune RAM nelimitată (limitată de sistemul de operare). Există o versiune pe 32 de biți (x86) și 2 versiuni pe 64 de biți (ia64 și x64, ambele doar pentru SQL Server 2005) și nu are nicio limită pentru dimensiunea bazelor de date. Cu toate acestea, SQL Server 2005 permite instalarea acestuia pe desktop-ul Windows . Include toate funcționalitățile motorului, cu excepția unor funcții de înaltă disponibilitate. Funcționalitățile pentru business intelligence sunt toate incluse de la generarea de rapoarte cu Reporting Services (pentru SQL Server 2000, această componentă trebuie încărcată separat) până la utilizarea cuburilor OLAP cu Analysis Services, inclusiv transferul de date cu Integration Services (SQL Server) 2005) sau Servicii de transformare a datelor (SQL Server 7 & 2000). De asemenea, poate funcționa într-un cluster de până la 2 noduri de la versiunea sa din 2005.

Ediția grupului de lucru

Noua ediție a apărut cu SQL Server 2005. Suportă până la 2 procesoare și 3  GB RAM. Pentru moment, este disponibil doar într-o versiune pe 32 de biți și nu are nicio limită pentru dimensiunea bazelor de date. Include majoritatea funcționalității motorului, inclusiv posibilitatea de a participa la o replicare ca editor. Funcționalitatea de business intelligence inclusă este limitată la raportarea cu Reporting Services. Această ediție dispare odată cu versiunea 2012 a SQL Server.

Ediție web

Noua ediție a apărut în SQL Server 2008. Aproape de ediția Standard în ceea ce privește funcționalitatea, nu acceptă însă nici oglindirea, nici componentele de luare a deciziilor SQL Server. Licența sa permite utilizarea acestuia doar ca server de baze de date pentru un site web sau serviciu. Este disponibil ca abonament lunar, în special pentru gazde, pe lângă faptul că este disponibil mai convențional pentru cumpărare.

Ediție personală

Ediția cu SQL Server 7 și SQL Server 2000. existent suportă până la două procesoare și 2  GB de memorie RAM . Disponibil numai în versiunea pe 32 de biți și nu are limită pentru dimensiunea bazelor de date. Include majoritatea funcționalității motorului, inclusiv posibilitatea de a participa la replicare ca abonat. Nu are funcționalități pentru business intelligence. În ceea ce privește licențierea, deținerea unei licențe de acces client SQL Server (CAL) este suficientă pentru a utiliza această ediție.

Bază de date internă Windows / SQL Server încorporat

Similar cu ediția SQL Server Express, cu limitările de memorie, numărul de procesoare și dimensiunea bazei de date eliminate, totuși, acesta poate fi utilizat doar local și poate găzdui numai baze de date ale aplicațiilor Microsoft. Produsele precum Sharepoint sau anumite caracteristici ale Windows Active Directory îl folosesc.

Ediție MSDE / Express

Microsoft a publicat o ediție gratuită care constă doar din motorul de baze de date relaționale, limitat la 4  GB spațiu pe disc (10  GB în versiunea 2008 R2). Cu toate acestea, poate fi utilizat pentru a crea până la 32.760 baze de date diferite, adică mai mult de 320  TB de date din versiunea 2008 R2.

Ediție compactă

Denumit anterior: Pocket PC / Mobile / Everywhere Edition. Aceasta este o ediție ușoară potrivită pentru utilizare pe PDA-uri sau smartphone-uri echipate cu Windows Mobile . Versiunea compactă (versiunea 3.5), care succede edițiilor mobile, este deschisă stațiilor de lucru clasice bazate pe Windows . Această ediție poate participa la replicare ca abonat.

Licențe

SQL Server acceptă 5 sisteme de licențiere:

  • Pe licență de utilizator  : SQL Server poate utiliza toate procesoarele de pe server (până la versiunea 2008 R2, maximum 16 (ediția standard) sau 20 (ediția Enterprise) Cores în versiunea 2012), dar este limitat la numărul de utilizatori specificat. Fiecare persoană fizică care folosește o aplicație care utilizează SQL Server este considerată utilizator de bază de date.
  • Pe licență de dispozitiv (de la SQL Server 2005): SQL Server poate utiliza toate procesoarele de pe server (până la versiunea 2008 R2, maxim 16 (ediție standard) sau 20 (ediție Enterprise) nuclee în versiunea 2012), dar este limitat la numărul de dispozitive specificat. Fiecare dispozitiv fizic care accesează direct sau indirect SQL Server este considerat utilizator de bază de date
  • Licență pe procesor  : SQL Server utilizează numărul de procesoare specificat în licență și poate accepta orice număr de utilizatori. Acest mod de licență este valabil până la ediția 2008 R2 și dispare ulterior.
  • Licență pe bază  : trebuie să cumpărați atât de multe licențe „Core”, cât sunt nuclee în server sau în mașina virtuală. Numărul de utilizatori este nelimitat. Acest mod de licență este valabil numai din ediția 2012. Prețul este numărat de perechi de nuclee și începe de la 4.
  • Licență SPLA  : pentru ediția web, aceasta este o licență de închiriere. Prețul scăzut face posibilă concurența cu RDBMS „gratuite”, cum ar fi MySQL sau PostGreSQL.

Tipurile de licență care pot fi luate în considerare pentru utilizarea SQL Server în spatele unui front-end Web este fie licența pe procesor sau nucleu, fie modul SPLA limitat la ediția web.

Instrumente suplimentare care integrează un server SQL

Unele instrumente legate de SQL Server merită menționate ...

BizTalk

Soluție Microsoft pentru integrarea datelor EAI (Enterprise Application Integration) și B2B (business-to-business).

Sharepoint

Soluție globală de gestionare a cunoștințelor de afaceri (KB - Baza de cunoștințe) care permite gestionarea conținutului (prin intermediul site-ului web și forum) și documente electronice partajate, regăsirea informațiilor, precum și posibilitatea de a crea formulare și prezentarea statisticilor de luare a deciziilor, cum ar fi tablouri de bord, indicatori cheie KPI - Indicator cheie de performanță) ...

Dinamica

Acesta este Microsoft ERP (Enterprise Resource Planning).

TFS (Team Foundation Server)

Este o forjă software care permite gestionarea codului sursă, construirea, monitorizarea resurselor, planificarea sarcinilor ...

SCOM (System Center Operations Manager)

Sistem de gestionare centralizată, supraveghere și întreținere a sistemului IT (servere, PC-uri, periferice online) și a infrastructurii de rețea.

WSUS (Windows Server Update Services)

Serviciu de distribuție pentru sistemul de operare Microsoft și aplicații pentru actualizarea diferitelor mașini Windows într-un parc de computer (utilizează versiunea Express gratuită)

Instrumente suplimentare care pot utiliza un server SQL

StreamInsight

StreamInsight este o platformă concepută pentru a dezvolta și implementa la scară largă aplicații Complex Event Processing (CEP). Se bazează pe două componente esențiale: StreamInsight Server pentru gestionarea fluxurilor de date și StreamInsight Framework pentru crearea de interfețe.

EDF utilizează StreamInsight pentru gestionarea incidentelor pentru toate echipamentele sale IT.

SQL Server și Big Data

Foarte angajat în această mișcare, în special prin Hadoop, Microsoft oferă soluții diferite pentru gestionarea datelor mari.

HDInsight (Hadoop)

HDInsight este o soluție Hadoop oferită în cloud Azure sau local (în scopuri de dezvoltare).

Instrumentele de limbare Map / Reduce, Hive, Sqoop și Pig facilitează transferul și manipularea datelor de la SQL Server la Hadoop. Un SDK bazat pe cadrul .NET vă permite să scrieți loturi utilizând Visual Studio. O instalare locală a Hadoop destinată dezvoltatorilor este disponibilă prin HDInsight Server.

Polibaza

Polybase este un instrument destinat atacării diferitelor surse de date relaționale (SQL Server), decizionale (SQL Server Parallel Data Warehouse - PDW) sau date big data, prin diferite procese precum Map Reduce sau MPP (Massive Parallel Processive)

Referințe

  1. „  Ediții și caracteristici acceptate ale SQL Server 2019 (15.x)  ” ,4 noiembrie 2019(accesat la 23 decembrie 2020 )
  2. (în) „  Docker: Instalați containere pentru SQL Server pe Linux - SQL Server  ” pe microsoft.com (accesat la 4 septembrie 2020 ) .
  3. FreeTDS
  4. În mod implicit, pe SQL Server 2014, nu este posibilă lansarea unei comenzi de sistem din SQL Server
  5. https://technet.microsoft.com/fr-fr/library/ms175609%28v=sql.90%29.aspx
  6. „  Cloud Computing Services / Microsoft Azure  ” , pe microsoft.com (accesat la 4 septembrie 2020 ) .
  7. „  Cloud Computing Services / Microsoft Azure  ” , pe microsoft.com (accesat la 4 septembrie 2020 ) .
  8. SQL Server 2012, ce este nou?

Vezi și tu

Articole similare