Microsoft SQL Server - Microsoft SQL Server

Microsoft SQL Server
Dezvoltatori Microsoft
Eliberarea inițială 24 aprilie 1989 ; Acum 32 de ani , ca SQL Server 1.0 ( 24.04.1989 )
Versiune stabila
SQL Server 2019/4  Editați acest lucru pe Wikidata noiembrie 2019 ; Acum 22 de luni ( 4 noiembrie 2019 )
Scris in C , C ++
Sistem de operare Linux , Microsoft Windows Server , Microsoft Windows
Disponibil in Engleză, chineză, franceză, germană, italiană, japoneză, coreeană, portugheză (Brazilia), rusă, spaniolă și indoneziană
Tip Sistem de gestionare a bazelor de date relaționale
Licență Software proprietar
Site-ul web www .microsoft .com / sql-server

Microsoft SQL Server este un sistem de gestionare a bazelor de date relaționale dezvoltat de Microsoft . Ca server de baze de date , este un produs software cu funcția principală de stocare și preluare a datelor, așa cum este cerut de alte aplicații software - care poate rula fie pe același computer, fie pe alt computer într-o rețea (inclusiv Internetul). Microsoft comercializează cel puțin o duzină de ediții diferite de Microsoft SQL Server, destinate unor segmente de public diferite și pentru încărcări de lucru, de la aplicații mici cu o singură mașină la aplicații mari orientate către internet, cu mulți utilizatori concurenți .

Istorie

Istoria Microsoft SQL Server începe cu primul produs Microsoft SQL Server - SQL Server 1.0, un server pe 16 biți pentru sistemul de operare OS / 2 din 1989 - și se extinde până în ziua curentă.

Repere

  • MS SQL Server pentru OS / 2 a început ca un proiect de portare a Sybase SQL Server pe OS / 2 în 1989, de către Sybase , Ashton-Tate și Microsoft .
  • SQL Server 4.2 pentru NT este lansat în 1993, marcând intrarea în Windows NT .
  • SQL Server 6.0 este lansat în 1995, marcând sfârșitul colaborării cu Sybase ; Sybase ar continua să dezvolte propria variantă de SQL Server , Sybase Adaptive Server Enterprise , independent de Microsoft.
  • SQL Server 7.0 este lansat în 1998, marcând conversia codului sursă de la C la C ++.
  • SQL Server 2005, lansat în 2005, finalizează revizuirea completă a vechiului cod Sybase în cod Microsoft.
  • SQL Server 2012, lansat în 2012, adaugă stocare în memorie coloană, alias xVelocity.
  • SQL Server 2017, lansat în 2017, adaugă suport Linux pentru aceste platforme Linux: Red Hat Enterprise Linux , SUSE Linux Enterprise Server , Ubuntu & Docker Engine .

În prezent

Începând din mai 2020, următoarele versiuni sunt acceptate de Microsoft:

  • SQL Server 2012
  • SQL Server 2014
  • SQL Server 2016
  • SQL Server 2017
  • SQL Server 2019

Începând cu SQL Server 2016, produsul este acceptat numai pentru procesoarele x64.

Versiunea actuală este Microsoft SQL Server 2019, lansată pe 4 noiembrie 2019. Versiunea RTM este 15.0.2000.5.

Ediții

Microsoft pune la dispoziție SQL Server în mai multe ediții, cu seturi de funcții diferite și vizând utilizatori diferiți. Aceste ediții sunt:

Ediții principale

Afacere
SQL Server Enterprise Edition include atât motorul bazei de date de bază, cât și servicii de completare, cu o serie de instrumente pentru crearea și gestionarea unui cluster SQL Server. Poate gestiona baze de date de până la 524 petabytes și poate adresa 12 terabytes de memorie și acceptă 640 de procesoare logice (nuclee CPU).
Standard
SQL Server Standard Edition include motorul de bază de date, împreună cu serviciile de sine stătătoare. Diferă de ediția Enterprise prin faptul că acceptă mai puține instanțe active (numărul de noduri dintr-un cluster) și nu include unele funcții de înaltă disponibilitate, cum ar fi memoria cu adăugare la cald (permițând adăugarea de memorie în timp ce serverul este încă în funcțiune) și indici paraleli.
Web
SQL Server Web Edition este o opțiune cu TCO redus pentru găzduirea web.
Business Intelligence
Introdus în SQL Server 2012 și concentrându-se pe Self Service și Corporate Business Intelligence. Include funcțiile Standard Edition și instrumentele de Business Intelligence: PowerPivot, Power View, Modelul semantic BI, Master Data Services, Data Quality Services și xVelocity in-memory analytics.
Grup de lucru
SQL Server Workgroup Edition include funcționalitatea de bază a bazei de date, dar nu include serviciile suplimentare. Rețineți că această ediție a fost retrasă în SQL Server 2012.
Expres
SQL Server Express Edition este o ediție gratuită redusă a SQL Server, care include motorul de bază de date. Deși nu există limitări privind numărul de baze de date sau de utilizatori acceptați, acesta se limitează la utilizarea unui singur procesor, 1 GB memorie și 10 GB fișiere de baze de date (4 GB fișiere de baze de date înainte de SQL Server Express 2008 R2). Este destinat să înlocuiască MSDE . Două ediții suplimentare oferă un superset de caracteristici care nu aparțin ediției Express originale. Primul este SQL Server Express cu instrumente , care include SQL Server Management Studio Basic. SQL Server Express cu servicii avansate adaugă capacitate de căutare text complet și servicii de raportare.

Ediții specializate

Discul de instalare SQL Server 2005 Developer Edition
Azur
Baza de date Microsoft Azure SQL este versiunea bazată pe cloud a Microsoft SQL Server, prezentată ca o platformă ca o ofertă de servicii pe Microsoft Azure .
MPP Azure
Azure SQL Data Warehouse este versiunea bazată pe cloud a Microsoft SQL Server într-o arhitectură MPP (procesare paralelă masivă) pentru sarcini de lucru analitice, prezentată ca o platformă ca o ofertă de servicii pe Microsoft Azure .
Compact (SQL CE)
Ediție compactă este un motor de baze de date încorporat. Spre deosebire de celelalte ediții ale SQL Server, motorul SQL CE se bazează pe SQL Mobile (inițial conceput pentru a fi utilizat cu dispozitive portabile) și nu are aceleași binare. Datorită dimensiunii reduse (1 MB amprentă DLL), are un set de caracteristici redus semnificativ în comparație cu celelalte ediții. De exemplu, acceptă un subset de tipuri de date standard, nu acceptă proceduri stocate sau vizualizări sau loturi de instrucțiuni multiple (printre alte limitări). Este limitat la dimensiunea maximă a bazei de date de 4 GB și nu poate fi rulat ca serviciu Windows, Compact Edition trebuie să fie găzduit de aplicația care îl utilizează. Versiunea 3.5 include suport pentru serviciile de sincronizare ADO.NET. SQL CE nu acceptă conectivitatea ODBC, spre deosebire de SQL Server propriu-zis.
Dezvoltator
SQL Server Developer Edition include aceleași caracteristici ca SQL Server Enterprise Edition, dar este limitată de licență pentru a fi utilizată doar ca sistem de dezvoltare și testare și nu ca server de producție. Începând cu începutul anului 2016, Microsoft a făcut publică această ediție gratuită.
Încorporat (SSEE)
SQL Server 2005 Embedded Edition este o instanță numită special configurată a motorului de baze de date SQL Server Express care poate fi accesată numai de anumite servicii Windows.
Evaluare
SQL Server Evaluation Edition, cunoscută și sub numele de Trial Edition , are toate caracteristicile Enterprise Edition, dar este limitată la 180 de zile, după care instrumentele vor continua să ruleze, dar serviciile serverului se vor opri.
Circuit rapid
SQL Server Fast Track este specific pentru stocarea de date la scară de întreprindere și procesarea business intelligence și rulează pe hardware-ul de arhitectură de referință care este optimizat pentru Fast Track.
LocalDB
Introdus în SQL Server Express 2012, LocalDB este o versiune minimă, la cerere, a SQL Server, care este concepută pentru dezvoltatorii de aplicații. Poate fi folosit și ca bază de date încorporată.
Sistem de platformă Google Analytics (APS)
Fost Parallel Data Warehouse (PDW) Un dispozitiv SQL Server de procesare masivă paralelă (MPP) optimizat pentru depozitarea datelor la scară largă , cum ar fi sute de terabyți.
Datawarehouse Appliance Edition
Preinstalat și configurat ca parte a unui dispozitiv în parteneriat cu Dell și HP, pe baza arhitecturii Fast Track. Această ediție nu include SQL Server Integration Services, Analysis Services sau Reporting Services.sqlcmd

Ediții întrerupte

MSDE
Microsoft SQL Server Data Engine / Desktop Engine / Desktop Edition. SQL Server 7 și SQL Server 2000. Destinat utilizării ca componentă a aplicației, nu a inclus instrumente de gestionare GUI. Mai târziu, Microsoft a pus la dispoziție și un instrument de administrare web. Inclus cu unele versiuni de Microsoft Access , instrumente de dezvoltare Microsoft și alte ediții de SQL Server.
Ediție personală
SQL Server 2000. Avea limite de încărcare de lucru sau conexiune, cum ar fi MSDE, dar nu avea limită de dimensiune a bazei de date. Include instrumente standard de management. Destinat utilizării ca proxy mobil / deconectat, licențiat pentru utilizare cu ediția SQL Server 2000 Standard.
Centru de date
SQL Server 2008 R2 Datacenter este o ediție completă a SQL Server și este conceput pentru centrele de date care necesită niveluri ridicate de suport pentru aplicații și scalabilitate. Suportă 256 de procesoare logice și memorie practic nelimitată și vine cu ediția StreamInsight Premium. Ediția Datacenter a fost retrasă în SQL Server 2012; toate caracteristicile sale sunt disponibile în SQL Server 2012 Enterprise Edition.

Arhitectură

Stratul de protocol implementează interfața externă pentru SQL Server. Toate operațiunile care pot fi invocate pe SQL Server sunt comunicate acestuia printr-un format definit de Microsoft, numit Tabular Data Stream (TDS). TDS este un protocol de strat de aplicație, utilizat pentru a transfera date între un server de baze de date și un client. Inițial proiectat și dezvoltat de Sybase Inc. pentru motorul lor de baze de date relaționale Sybase SQL Server în 1984 și ulterior de Microsoft în Microsoft SQL Server, pachetele TDS pot fi încorporate în alte protocoale dependente de transport fizic, inclusiv TCP / IP , denumite țevi și partajate memorie . În consecință, accesul la SQL Server este disponibil prin aceste protocoale. În plus, API-ul SQL Server este expus și asupra serviciilor web .

Stocare a datelor

Stocarea datelor este o bază de date , care este o colecție de tabele cu coloane tastate . SQL Server acceptă diferite tipuri de date, inclusiv tipuri primitive, cum ar fi Integer , Float , Decimal , Char (inclusiv șiruri de caractere), Varchar (șiruri de caractere cu lungime variabilă), binar (pentru bloburi nestructurate de date), Text (pentru date textuale), printre altele . Rotunjirea de flotoare la numere întregi utilizează fie Simetric aritmetică Rotunjirea sau simetrica rotunjește în jos ( fix ) , în funcție de argumente: SELECT Round(2.5, 0)da 3.

Microsoft SQL Server permite, de asemenea, definirea și utilizarea tipurilor compozite definite de utilizator (UDT). De asemenea, pune la dispoziție statistici de server sub formă de tabele și vizualizări virtuale (denumite Dynamic Management Views sau DMV). În plus față de tabele, o bază de date poate conține și alte obiecte, inclusiv vizualizări , proceduri stocate , indici și constrângeri , împreună cu un jurnal de tranzacții. O bază de date SQL Server poate conține maximum 2 31 de obiecte și poate cuprinde mai multe fișiere la nivel de sistem de operare cu o dimensiune maximă a fișierului de 2 60 octeți (1 exabyte). Datele din baza de date sunt stocate în fișiere de date primare cu o extensie .mdf. Fișierele de date secundare, identificate cu o .ndfextensie, sunt utilizate pentru a permite distribuirea datelor dintr-o singură bază de date în mai multe fișiere și, opțional, în mai multe sisteme de fișiere. Fișierele jurnal sunt identificate cu .ldfextensia.

Spațiul de stocare alocat unei baze de date este împărțit în pagini numerotate secvențial , fiecare având dimensiunea de 8 KB. O pagină este unitatea de bază a I / O pentru operațiunile SQL Server. O pagină este marcată cu un antet de 96 octeți care stochează metadatele despre pagină, inclusiv numărul paginii, tipul paginii, spațiul liber pe pagină și ID-ul obiectului care o deține. Tipul de pagină definește datele conținute în pagină. Aceste date includ: date stocate în baza de date, un index, o hartă de alocare, care conține informații despre modul în care paginile sunt alocate tabelelor și indexurilor; și o hartă a modificărilor care conține informații despre modificările aduse altor pagini de la ultima copie de rezervă sau înregistrare sau care conțin tipuri mari de date, cum ar fi imaginea sau textul. În timp ce o pagină este unitatea de bază a unei operații de I / O, spațiul este de fapt gestionat în termeni de o întindere care constă din 8 pagini. Un obiect de bază de date poate acoperi toate cele 8 pagini într-o extensie („întindere uniformă”) sau poate partaja o extindere cu încă 7 obiecte („extindere mixtă”). Un rând dintr-un tabel de baze de date nu poate cuprinde mai mult de o pagină, deci este limitat la 8 KB. Cu toate acestea, dacă datele depășesc 8 KB și rândul conține date varchar sau varbinare , datele din acele coloane sunt mutate într-o pagină nouă (sau, eventual, o secvență de pagini, numită unitate de alocare ) și înlocuite cu un pointer către date.

Pentru stocarea fizică a unui tabel, rândurile sale sunt împărțite într-o serie de partiții (numerotate de la 1 la n). Dimensiunea partiției este definită de utilizator; în mod implicit, toate rândurile sunt într-o singură partiție. Un tabel este împărțit în mai multe partiții pentru a răspândi o bază de date pe un cluster de calculatoare . Rândurile din fiecare partiție sunt stocate fie în structura B-tree, fie în heap . Dacă tabelul are un index asociat, grupat, pentru a permite extragerea rapidă a rândurilor, rândurile sunt stocate în ordine în funcție de valorile lor de index, cu un arbore B care oferă indexul. Datele se află în nodul frunzei frunzelor și în alte noduri care stochează valorile indexului pentru datele frunzei accesibile de la nodurile respective. Dacă indexul nu este grupat, rândurile nu sunt sortate în funcție de cheile index. O vizualizare indexată are aceeași structură de stocare ca un tabel indexat. Un tabel fără un index grupat este stocat într-o structură de heap neordonată. Cu toate acestea, tabelul poate avea indici non-grupați pentru a permite extragerea rapidă a rândurilor. În unele situații, structura heap are avantaje de performanță față de structura grupată. Atât grămezile, cât și arborii B pot acoperi mai multe unități de alocare.

Managementul tamponului

SQL Server memorează paginile în memorie RAM pentru a minimiza I / O pe disc. Orice pagină de 8 KB poate fi stocată în memorie, iar setul tuturor paginilor stocate în prezent se numește cache tampon. Cantitatea de memorie disponibilă pentru SQL Server decide câte pagini vor fi memorate în cache. Memoria cache este gestionată de Buffer Manager . Fie citirea sau scrierea pe orice pagină o copiază în memoria cache. Citirile sau scrierile ulterioare sunt redirecționate către copia în memorie, mai degrabă decât versiunea de pe disc. Pagina este actualizată pe disc de Buffer Manager numai dacă memoria cache nu a fost menționată de ceva timp. În timp ce scrieți paginile înapoi pe disc, este utilizată I / O asincronă prin care operația I / O se face într-un fir de fundal, astfel încât alte operații să nu aibă nevoie să aștepte finalizarea operației I / O. Fiecare pagină este scrisă împreună cu suma sa de control atunci când este scrisă. Când citiți pagina înapoi, suma sa de verificare este calculată din nou și potrivită cu versiunea stocată pentru a se asigura că pagina nu a fost deteriorată sau modificată între timp.

Concurență și blocare

SQL Server permite mai multor clienți să utilizeze aceeași bază de date simultan. Ca atare, trebuie să controleze accesul simultan la datele partajate, pentru a asigura integritatea datelor - atunci când mai mulți clienți actualizează aceleași date sau clienții încearcă să citească date care sunt în curs de modificare de către un alt client. SQL Server oferă două moduri de control al concurenței: concurență pesimistă și concurență optimistă . Când se utilizează controlul concurenței pesimiste, SQL Server controlează accesul simultan utilizând încuietori. Încuietorile pot fi partajate sau exclusive. Blocarea exclusivă acordă utilizatorului acces exclusiv la date - niciun alt utilizator nu poate accesa datele atâta timp cât este blocată. Blocările partajate sunt utilizate atunci când unele date sunt citite - mai mulți utilizatori pot citi din datele blocate cu o blocare partajată, dar nu pot obține o blocare exclusivă. Acesta din urmă ar trebui să aștepte ca toate blocările partajate să fie eliberate.

Blocările pot fi aplicate pe diferite niveluri de granularitate - pe mese întregi, pagini sau chiar pe rând pe tabele. Pentru indici, poate fi fie pe întregul index, fie pe frunzele indexului. Nivelul de granularitate care trebuie utilizat este definit pe baza de date de către administratorul bazei de date. În timp ce un sistem de blocare cu granulație fină permite mai multor utilizatori să folosească masa sau indexul simultan, necesită mai multe resurse, deci nu produce automat performanțe mai mari. SQL Server include, de asemenea, alte două soluții ușoare de excludere reciprocă - zăvoare și blocări - care sunt mai puțin robuste decât blocările, dar consumă mai puține resurse. SQL Server le folosește pentru DMV-uri și alte resurse care de obicei nu sunt ocupate. SQL Server monitorizează, de asemenea, toate firele de lucru care dobândesc blocaje pentru a se asigura că acestea nu ajung în blocaje - în caz că o fac, SQL Server ia măsuri de remediere, care, în multe cazuri, trebuie să omoare unul dintre firele încurcate într-un blocaj și să revină înapoi tranzacția pe care a început-o. Pentru a implementa blocarea, SQL Server conține Lock Manager . Managerul de blocare menține un tabel în memorie care gestionează obiectele bazei de date și se blochează, dacă există, pe ele împreună cu alte metadate despre blocare. Accesul la orice obiect partajat este mediat de managerul de blocare, care fie acordă acces la resursă, fie îl blochează.

SQL Server oferă, de asemenea, mecanismul optimist de control al concurenței, care este similar cu controlul simultan multiversion utilizat în alte baze de date. Mecanismul permite crearea unei noi versiuni a unui rând de fiecare dată când rândul este actualizat, spre deosebire de suprascrierea rândului, adică un rând este identificat suplimentar prin ID-ul tranzacției care a creat versiunea rândului. Atât vechiul cât și noile versiuni ale rândului sunt stocate și menținute, deși versiunile vechi sunt mutate din baza de date într - o bază de date sistem identificat ca fiind Tempdb. Când un rând este în curs de actualizare, orice alte cereri nu sunt blocate (spre deosebire de blocare), ci sunt executate pe versiunea mai veche a rândului. Dacă cealaltă cerere este o declarație de actualizare, va rezulta două versiuni diferite ale rândurilor - ambele vor fi stocate de baza de date, identificate prin ID-urile de tranzacție respective.

Recuperarea datelor și programabilitatea

Modul principal de recuperare a datelor dintr-o bază de date SQL Server este interogarea acestuia. Interogarea este exprimată utilizând o variantă de SQL numită T-SQL , un dialect pe care Microsoft SQL Server îl partajează cu Sybase SQL Server datorită moștenirii sale. Interogarea specifică în mod declarativ ce trebuie recuperat. Acesta este procesat de procesorul de interogare, care descrie secvența pașilor care vor fi necesari pentru recuperarea datelor solicitate. Secvența de acțiuni necesare pentru executarea unei interogări se numește plan de interogare . S-ar putea să existe mai multe moduri de a procesa aceeași interogare. De exemplu, pentru o interogare care conține o instrucțiune join și o instrucțiune select , executarea join pe ambele tabele și apoi executarea select pe rezultate ar da același rezultat ca selectarea din fiecare tabel și apoi executarea join, dar ar duce la o execuție diferită planuri. În acest caz, SQL Server alege planul care se așteaptă să obțină rezultatele în cel mai scurt timp posibil. Aceasta se numește optimizarea interogării și este efectuată chiar de procesorul de interogare.

SQL Server include un optimizator de interogare bazat pe costuri, care încearcă să optimizeze costul, în ceea ce privește resursele necesare pentru a executa interogarea. Având în vedere o interogare, atunci optimizatorul de interogare privește schema bazei de date , statisticile bazei de date și încărcarea sistemului în acel moment. Apoi decide ce secvență să acceseze tabelele menționate în interogare, ce secvență să execute operațiunile și ce metodă de acces să fie utilizată pentru a accesa tabelele. De exemplu, dacă tabelul are un index asociat, indiferent dacă ar trebui să fie folosit sau nu: dacă indexul se află pe o coloană care nu este unică pentru majoritatea coloanelor („selectivitate” scăzută), s-ar putea să nu fie util să se utilizeze indexul pentru accesarea datelor. În cele din urmă, decide dacă execută interogarea simultan sau nu. În timp ce o execuție simultană este mai costisitoare în ceea ce privește timpul total al procesorului, deoarece execuția este de fapt împărțită la diferite procesoare ar putea însemna că se va executa mai repede. Odată generat un plan de interogare pentru o interogare, acesta este temporar memorat în cache. Pentru alte invocații ale aceleiași interogări, se utilizează planul cache. Planurile neutilizate sunt eliminate după un timp.

SQL Server permite, de asemenea, definirea procedurilor stocate . Procedurile stocate sunt interogări T-SQL parametrizate, care sunt stocate în serverul însuși (și nu sunt emise de aplicația client, așa cum se întâmplă în cazul interogărilor generale). Procedurile stocate pot accepta valorile trimise de client ca parametri de intrare și pot trimite rezultatele înapoi ca parametri de ieșire. Pot apela funcții definite și alte proceduri stocate, inclusiv aceeași procedură stocată (până la un număr stabilit de ori). Ele pot avea acces selectiv . Spre deosebire de alte interogări, procedurile stocate au un nume asociat, care este utilizat la runtime pentru a rezolva interogările reale. De asemenea, deoarece codul nu trebuie trimis de la client de fiecare dată (deoarece poate fi accesat pe nume), reduce traficul de rețea și îmbunătățește oarecum performanța. Planurile de execuție pentru procedurile stocate sunt, de asemenea, stocate în cache, după caz.

T-SQL

T-SQL (Transact-SQL) este extensia de limbaj procedural proprietară Microsoft pentru SQL Server. Oferă instrucțiuni REPL (Read-Eval-Print-Loop) care extind setul de instrucțiuni SQL standard pentru manipularea datelor ( DML ) și instrucțiunile pentru Definirea datelor ( DDL ), inclusiv setările specifice SQL Server, securitatea și gestionarea statisticilor bazei de date.

Acesta expune cuvinte cheie pentru operațiunile care pot fi efectuate pe SQL Server, inclusiv crearea și modificarea schemelor bazei de date, introducerea și editarea datelor în baza de date, precum și monitorizarea și gestionarea serverului în sine. Aplicațiile client care consumă date sau gestionează serverul vor valorifica funcționalitatea SQL Server prin trimiterea de interogări și instrucțiuni T-SQL care sunt apoi procesate de server și rezultatele (sau erorile) returnate aplicației client. Pentru aceasta expune tabele numai în citire din care pot fi citite statisticile serverului. Funcționalitatea de gestionare este expusă prin intermediul procedurilor stocate definite de sistem, care pot fi invocate din interogările T-SQL pentru a efectua operația de gestionare. De asemenea, este posibil să creați servere conectate utilizând T-SQL. Serverele conectate permit unei singure interogări să proceseze operațiunile efectuate pe mai multe servere.

SQL Server Native Client (aka SNAC)

SQL Server Native Client este biblioteca nativă de acces la datele clientului pentru Microsoft SQL Server, versiunea 2005 și mai departe. Implementează în mod nativ suport pentru caracteristicile SQL Server, inclusiv implementarea Tabular Data Stream , suport pentru baze de date SQL Server în oglindă, suport complet pentru toate tipurile de date acceptate de SQL Server, operațiuni asincrone, notificări de interogare, suport pentru criptare , precum și primirea mai multor seturi de rezultate într-o singură sesiune de baze de date. SQL Server Native Client este utilizat sub capotă de pluginurile SQL Server pentru alte tehnologii de acces la date, inclusiv ADO sau OLE DB . Clientul nativ SQL Server poate fi de asemenea utilizat direct, ocolind straturile generice de acces la date.

Pe 28 noiembrie 2011, a fost lansată o versiune de previzualizare a driverului ODBC SQL Server pentru Linux .

SQL CLR

Microsoft SQL Server 2005 include o componentă numită SQL CLR („Common Language Runtime”) prin care se integrează cu .NET Framework . Spre deosebire de majoritatea celorlalte aplicații care utilizează .NET Framework, SQL Server în sine găzduiește runtime - ul .NET Framework , adică cerințele de memorie, threading și gestionare a resurselor din .NET Framework sunt îndeplinite de SQLOS însuși, mai degrabă decât de sistemul de operare Windows subiacent. SQLOS oferă servicii de detectare și rezolvare a blocajului și pentru codul .NET. Cu SQL CLR, procedurile și declanșatoarele stocate pot fi scrise în orice limbaj .NET gestionat , inclusiv C # și VB.NET . Codul gestionat poate fi, de asemenea, utilizat pentru a defini UDT-urile ( tipurile definite de utilizator ), care pot persista în baza de date. Codul gestionat este compilat în ansamblurile CLI și după ce a fost verificat pentru siguranța tipului , este înregistrat în baza de date. După aceea, pot fi invocate ca orice altă procedură. Cu toate acestea, numai un subset al Bibliotecii de clase de bază este disponibil, atunci când se execută cod în SQL CLR. Majoritatea API-urilor legate de funcționalitatea interfeței cu utilizatorul nu sunt disponibile.

Când scrieți cod pentru SQL CLR, datele stocate în bazele de date SQL Server pot fi accesate folosind API-urile ADO.NET, ca orice altă aplicație gestionată care accesează datele SQL Server. Cu toate acestea, acest lucru creează o nouă sesiune de baze de date, diferită de cea în care se execută codul. Pentru a evita acest lucru, SQL Server oferă unele îmbunătățiri furnizorului ADO.NET care permite conexiunea să fie redirecționată către aceeași sesiune care găzduiește deja codul care rulează. Astfel de conexiuni se numesc conexiuni de context și sunt setate prin setarea parametrului la în șirul de conexiune. SQL Server oferă, de asemenea, alte câteva îmbunătățiri API-ului ADO.NET , inclusiv clase pentru a lucra cu date tabulare sau un singur rând de date, precum și clase pentru a lucra cu metadate interne despre datele stocate în baza de date. De asemenea, oferă acces la caracteristicile XML din SQL Server, inclusiv asistența XQuery . Aceste îmbunătățiri sunt disponibile și în procedurile T-SQL ca urmare a introducerii noului tip de date XML (interogare, valoare, funcții noduri). context connectiontrue

Servicii

SQL Server include, de asemenea, un sortiment de servicii de completare. Deși acestea nu sunt esențiale pentru funcționarea sistemului de baze de date, ele oferă servicii cu valoare adăugată pe lângă sistemul de bază de gestionare a bazelor de date. Aceste servicii rulează fie ca parte a unei componente SQL Server, fie în afara procesului ca Windows Service și prezintă propriul API pentru a le controla și interacționa.

Servicii de învățare automată

Serviciile de învățare automată SQL Server funcționează în cadrul instanței serverului SQL, permițând oamenilor să facă învățarea automată și analiza datelor fără a fi nevoie să trimită date prin rețea sau să fie limitați de memoria propriilor computere. Serviciile de vin cu distribuții R și Python Microsoft care conțin pachete utilizate în mod obișnuit pentru știință de date, împreună cu unele pachete de proprietate ( de exemplu revoscalepy , RevoScaleR , microsoftml) , care pot fi folosite pentru a crea modele de mașini la scară.

Analiștii își pot configura computerul client pentru a se conecta la un server SQL la distanță și pot împinge execuțiile de scripturi către acesta, sau pot rula un script R sau Python ca un script extern în cadrul unei interogări T-SQL. Modelul instruit de învățare automată poate fi stocat într-o bază de date și utilizat pentru notare.

Broker de servicii

Folosit într-o instanță, mediu de programare. Pentru aplicații cross-instance, Service Broker comunică prin TCP / IP și permite sincronizarea diferitelor componente, prin schimbul de mesaje. Service Broker, care rulează ca parte a motorului bazei de date, oferă o platformă fiabilă de mesagerie și de așteptare a mesajelor pentru aplicațiile SQL Server.

Serviciile de broker de servicii constă din următoarele părți:

  • tipuri de mesaje
  • contracte
  • cozi
  • programe de servicii
  • rute

Tipul de mesaj definește formatul de date utilizat pentru mesaj. Acesta poate fi un obiect XML, text simplu sau date binare, precum și un corp de mesaj nul pentru notificări. Contractul definește ce mesaje sunt utilizate într-o conversație între servicii și cine poate pune mesaje în coadă. Coada acționează ca furnizor de stocare pentru mesaje. Acestea sunt implementate intern ca tabele de SQL Server, dar nu acceptă funcționalitatea de inserare, actualizare sau ștergere. Programul de servicii primește și procesează mesaje de broker de servicii. De obicei, programul de service este implementat ca procedură stocată sau aplicație CLR . Rutele sunt adrese de rețea unde se află brokerul de servicii în rețea.

De asemenea, brokerul de servicii acceptă caracteristici de securitate precum autentificarea în rețea (folosind NTLM , Kerberos sau certificate de autorizare ), verificarea integrității și criptarea mesajelor .

Servicii de replicare

Serviciile de replicare SQL Server sunt utilizate de SQL Server pentru a replica și sincroniza obiectele bazei de date, fie în întregime, fie într-un subset al obiectelor prezente, între agenții de replicare, care ar putea fi alte servere de baze de date din rețea sau cache-uri de baze de date pe partea clientului. Serviciile de replicare urmează un model de editor / abonat, adică modificările sunt trimise de un server de baze de date („editor”) și sunt primite de alții („abonați”). SQL Server acceptă trei tipuri diferite de replicare:

Replicarea tranzacției
Fiecare tranzacție efectuată către baza de date a editorului (baza de date master) este sincronizată cu abonații, care își actualizează bazele de date cu tranzacția. Replicarea tranzacțională sincronizează bazele de date aproape în timp real.
Îmbinați replicarea
Modificările făcute atât în ​​bazele de date ale editorului, cât și ale abonaților sunt urmărite, iar periodic modificările sunt sincronizate bidirecțional între editor și abonați. Dacă aceleași date au fost modificate diferit atât în ​​bazele de date ale editorului, cât și în cele ale abonaților, sincronizarea va duce la un conflict care trebuie rezolvat, fie manual, fie utilizând politici predefinite. rowguid trebuie configurat pe o coloană dacă este configurată replicarea de îmbinare.
Replicare instantanee
Replicarea instantaneului publică o copie a întregii baze de date (instantaneul de atunci al datelor) și se reproduce către abonați. Alte modificări ale instantaneului nu sunt urmărite.

Servicii de analiză

SQL Server Analysis Services (SSAS) adaugă OLAP și capabilități de extragere a datelor pentru bazele de date SQL Server. Motorul OLAP acceptă modurile de stocare MOLAP , ROLAP și HOLAP pentru date. Analysis Services acceptă standardul XML pentru analiză ca protocol de comunicare de bază. Datele cubului pot fi accesate utilizând interogări MDX și LINQ. Funcționalitatea specifică mineritului de date este expusă prin limbajul de interogare DMX . Analysis Services include diferiți algoritmi - arbori de decizie , algoritm de grupare, algoritmul Naive Bayes , analiza seriilor de timp, algoritm de grupare a secvențelor, analiză de regresie liniară și logistică și rețele neuronale - pentru utilizare în exploatarea datelor.

Servicii de raportare

SQL Server Reporting Services (SSRS) este un mediu de generare a rapoartelor pentru datele colectate din bazele de date SQL Server. Este administrat printr-o interfață web . Serviciile de raportare oferă o interfață de servicii web pentru a sprijini dezvoltarea aplicațiilor de raportare personalizate. Rapoartele sunt create ca fișiere RDL .

Rapoartele pot fi proiectate folosind versiunile recente ale Microsoft Visual Studio (Visual Studio.NET 2003, 2005 și 2008) cu Business Intelligence Development Studio , instalat sau cu Generatorul de rapoarte inclus . Odată create, fișierele RDL pot fi redate într-o varietate de formate, inclusiv Excel, PDF , CSV , XML , BMP , EMF , GIF , JPEG , PNG și TIFF și HTML Web Archive.

Servicii de notificare

Inițial introdus ca un supliment post-lansare pentru SQL Server 2000, Notification Services a fost inclus ca parte a platformei Microsoft SQL Server pentru prima și singura dată cu SQL Server 2005. SQL Server Notification Services este un mecanism pentru generarea de date notificări, care sunt trimise abonaților serviciilor de notificare. Un abonat se înregistrează pentru un anumit eveniment sau tranzacție (care este înregistrat pe serverul bazei de date ca declanșator); când apare evenimentul, Serviciile de notificare pot utiliza una dintre cele trei metode pentru a trimite un mesaj abonatului prin care se informează despre apariția evenimentului. Aceste metode includ SMTP, SOAP sau prin scrierea într-un fișier din sistemul de fișiere. Notification Services a fost întrerupt de Microsoft odată cu lansarea SQL Server 2008 în august 2008 și nu mai este o componentă acceptată oficial a platformei de baze de date SQL Server.

Servicii de integrare

SQL Server Integration Services (SSIS) oferă capabilități ETL pentru SQL Server pentru importul de date , integrarea datelor și necesitățile de depozitare a datelor . Integration Services include instrumente GUI pentru a construi fluxuri de lucru, cum ar fi extragerea datelor din diverse surse, interogarea datelor, transformarea datelor - inclusiv agregarea, duplicarea, de- / normalizarea și fuzionarea datelor - și apoi exportul datelor transformate în baze de date de destinație sau fișiere.

Serviciu de căutare a textului complet

Arhitectura serviciului Căutare text complet SQL Server

Serviciul de căutare text complet SQL Server este un serviciu specializat de indexare și interogare pentru text nestructurat stocat în bazele de date SQL Server. Indexul de căutare a textului complet poate fi creat pe orice coloană cu date text bazate pe caractere. Permite căutarea cuvintelor în coloanele de text. Deși poate fi efectuat cu LIKEoperatorul SQL , utilizarea serviciului de căutare text complet SQL Server poate fi mai eficientă. Complet permite potrivirea inexactă a șirului sursă, indicată printr-o valoare de rang care poate varia de la 0 la 1000 - un rang mai mare înseamnă o potrivire mai precisă. De asemenea, permite potrivirea lingvistică („căutare flexională”), adică variantele lingvistice ale unui cuvânt (cum ar fi un verb într-un timp diferit) vor fi, de asemenea, o potrivire pentru un cuvânt dat (dar cu un rang mai mic decât o potrivire exactă). Căutările de proximitate sunt, de asemenea, acceptate, adică, dacă cuvintele căutate nu apar în secvența în care sunt specificate în interogare, dar sunt aproape una de alta, ele sunt considerate, de asemenea, potrivite. T-SQL expune operatori speciali care pot fi utilizați pentru a accesa capacitățile FTS.

Motorul de căutare a textului complet este împărțit în două procese: procesul Filter Daemon ( msftefd.exe) și procesul de căutare ( msftesql.exe). Aceste procese interacționează cu SQL Server. Procesul de căutare include indexatorul (care creează indexurile de text integral) și procesorul de interogare a textului complet. Indexatorul scanează coloanele de text din baza de date. De asemenea, poate indexa prin coloane binare și poate utiliza iFilters pentru a extrage text semnificativ din blobul binar (de exemplu, atunci când un document Microsoft Word este stocat ca fișier binar nestructurat într-o bază de date). IFilters sunt găzduite de procesul Filter Daemon. Odată ce textul este extras, procesul Filter Daemon îl împarte într-o succesiune de cuvinte și îl predă indexerului. Indicatorul filtrează cuvintele de zgomot , adică cuvinte precum A , Și etc., care apar frecvent și nu sunt utile pentru căutare. Cu cuvintele rămase, se creează un index inversat , care asociază fiecare cuvânt cu coloanele în care au fost găsite. SQL Server în sine include o componentă Gatherer care monitorizează modificările la tabele și invocă indexatorul în cazul actualizărilor.

Atunci când procesorul de interogare SQL Server primește o interogare de text integral, acesta este predat procesorului de interogare FTS în procesul de căutare. Procesorul de interogare FTS împarte interogarea în cuvintele constitutive, filtrează cuvintele de zgomot și folosește un tezaur încorporat pentru a afla variantele lingvistice pentru fiecare cuvânt. Cuvintele sunt apoi interogate împotriva indexului inversat și se calculează un rang al exactității lor. Rezultatele sunt returnate clientului prin procesul SQL Server.

SQLCMD

SQLCMD este o aplicație de linie de comandă care vine cu Microsoft SQL Server și expune caracteristicile de gestionare ale SQL Server. Permite interogările SQL să fie scrise și executate din promptul de comandă. De asemenea, poate acționa ca un limbaj de scriptare pentru a crea și rula un set de instrucțiuni SQL ca script. Astfel de scripturi sunt stocate ca .sqlfișier și sunt utilizate fie pentru gestionarea bazelor de date, fie pentru a crea schema bazei de date în timpul implementării unei baze de date.

SQLCMD a fost introdus odată cu SQL Server 2005 și a continuat prin versiunile SQL Server 2008, 2008 R2, 2012, 2014, 2016 și 2019. Predecesorul său pentru versiunile anterioare a fost OSQL și ISQL, care erau echivalente funcțional în ceea ce privește execuția TSQL și multe parametrii liniei de comandă sunt identici, deși SQLCMD adaugă o versatilitate suplimentară.

Studio vizual

Microsoft Visual Studio include suport nativ pentru programarea datelor cu Microsoft SQL Server. Poate fi folosit pentru scrierea și depanarea codului care urmează să fie executat de SQL CLR. De asemenea, include un proiectant de date care poate fi utilizat pentru a crea, vizualiza sau edita grafic scheme de baze de date. Interogările pot fi create fie vizual, fie folosind cod. SSMS 2008 în continuare, oferă inteligență și pentru interogările SQL.

SQL Server Management Studio

SQL Server Management Studio este un instrument GUI inclus în SQL Server 2005 și ulterior pentru configurarea, gestionarea și administrarea tuturor componentelor din Microsoft SQL Server. Instrumentul include atât editori de scripturi, cât și instrumente grafice care funcționează cu obiecte și caracteristici ale serverului. SQL Server Management Studio înlocuiește Enterprise Manager ca interfață de gestionare principală pentru Microsoft SQL Server de la SQL Server 2005. O versiune a SQL Server Management Studio este disponibilă și pentru SQL Server Express Edition, pentru care este cunoscut sub numele de SQL Server Management Studio Express (SSMSE) ).

O caracteristică centrală a SQL Server Management Studio este Exploratorul de obiecte, care permite utilizatorului să navigheze, să selecteze și să acționeze asupra oricăruia dintre obiectele din server. Poate fi folosit pentru a observa și analiza vizual planurile de interogare și pentru a optimiza performanța bazei de date, printre altele. SQL Server Management Studio poate fi, de asemenea, utilizat pentru a crea o nouă bază de date, pentru a modifica orice schemă de baze de date existentă prin adăugarea sau modificarea tabelelor și a indexurilor sau pentru analiza performanței. Acesta include ferestrele de interogare care oferă o interfață bazată pe GUI pentru a scrie și executa interogări.

Azure Data Studio

Azure Data Studio este un editor de interogări pe mai multe platforme disponibil ca descărcare opțională. Instrumentul permite utilizatorilor să scrie interogări; rezultatele interogării exportului; trimiteți scripturi SQL la depozitele Git și efectuați diagnostice de bază ale serverului. Azure Data Studio acceptă sistemele Windows, Mac și Linux.

A fost lansat la Disponibilitate generală în septembrie 2018. Înainte de lansare, versiunea de previzualizare a aplicației era cunoscută sub numele de SQL Server Operations Studio.

Business Intelligence Development Studio

Business Intelligence Development Studio (BIDS) este IDE de la Microsoft utilizat pentru dezvoltarea de soluții de analiză a datelor și Business Intelligence utilizând Microsoft SQL Server Analysis Services , Reporting Services și Integration Services . Se bazează pe mediul de dezvoltare Microsoft Visual Studio , dar este personalizat cu extensiile și tipurile de proiecte specifice serviciilor SQL Server, inclusiv instrumente, controale și proiecte pentru rapoarte (folosind Reporting Services), Cuburi și structuri de extragere a datelor (folosind Analysis Services). Pentru SQL Server 2012 și versiunile ulterioare, acest IDE a fost redenumit SQL Server Data Tools (SSDT).

Vezi si

Referințe

Lecturi suplimentare

  • Lance Delano, Rajesh George și colab. (2005). Kitul de pornire Wrox SQL Server 2005 Express Edition (de la programator la programator) . Microsoft Press . ISBN  0-7645-8923-7 .
  • Delaney, Kalen și colab. (2007). În cadrul SQL Server 2005: Optimizare și optimizare a interogărilor . Microsoft Press . ISBN  0-7356-2196-9 .
  • Ben-Gan, Itzik și colab. (2006). În cadrul Microsoft SQL Server 2005: programare T-SQL . Microsoft Press . ISBN  0-7356-2197-7 .
  • Klaus Elk (2018). SQL Server cu C # . ISBN  1-7203-5867-2 .

linkuri externe