# Microsoft SQL Server

Microsoft SQL Server è un DBMS relazionale (RDBMS) prodotto da Microsoft. Nelle prime versioni era utilizzato per basi dati medio-piccole, ma a partire dalla versione 2000 è stato utilizzato anche per la gestione di basi dati di grandi dimensioni.

## Storia

L'ingresso di Microsoft nel mondo dei database di fascia "enterprise" risale intorno al 1989 quando cominciò la competizione con Oracle, IBM e Sybase che erano i dominatori del mercato. La prima versione fu SQL Server per OS/2 ed era quasi identica a Sybase SQL Server 4.0 su Unix.
Fino al 1994 Microsoft SQL Server riportava tre copyright della Sybase come indicazione della sua origine; in seguito Sybase cambiò il nome del suo prodotto in "Adaptive Server Enterprise" per evitare confusione con "Microsoft SQL Server".
SQL Server 7.0 è stato il primo database server basato su un'interfaccia grafica fabbricata dalla stessa ditta del Database.
A partire dalla versione 2016, "Microsoft SQL Server Management Studio" viene scorporato dalla distribuzione di Microsoft SQL Server e può essere scaricato e installato gratuitamente.
A partire dalla versione 2017, SQL Server è disponibile per Windows, Linux e contenitori Docker. Sempre da questa versione, non verranno più rilasciati aggiornamenti tramite Service Pack (SP) ma solamente tramite Cumulative Updates (CU) e Critical Updates (GDR).

## Descrizione

Microsoft SQL Server usa una variante del linguaggio SQL standard (lo standard ISO certificato nel 1992) chiamata "Transact-SQL" (T-SQL). Sia Microsoft SQL Server sia Sybase Adaptive Server Enterprise comunicano sulla rete utilizzando un protocollo di livello applicazioni chiamato "Tabular Data Stream" (TDS). SQL Server supporta anche "Open Database Connectivity" (ODBC). Il servizio di SQL Server risponde per default sulla porta 1433.

### Varianti

Una versione ridotta di Microsoft SQL Server 2000 chiamata MSDE (Microsoft SQL Server Desktop Engine) viene distribuita con prodotti come Visual Studio, Microsoft Access ed altri. MSDE presenta alcune restrizioni: supporta solo database con dimensioni massime di 2GB, non ha strumenti per essere amministrato ed è programmato per ridurre le prestazioni quando si superano gli 8 accessi concorrenti.
Il successore di MSDE è la serie SQL Server Express, nelle versioni 2005, 2008 e, recentemente, SQL Server 2012 Express. Simile ad MSDE, SQL Server Express include tutte le principali funzionalità di SQL Server, ma presenta delle restrizioni per quanto riguarda la scalabilità del database. Può utilizzare una sola CPU, 1GB di RAM e supporta database con dimensioni massime fino a 4GB (10GB dalla versione 2008 R2 e successive). Le versioni Express di SQL Server non includono naturalmente prodotti di fascia enterprise come "Analysis Services", "Reporting Services", "Data Transformation Services" e "Notification Services". Diversamente da MSDE, SQL Server Express include una console di amministrazione chiamata "SQL Server Management Studio Express", disponibile come pacchetto separato o in bundle. Esiste anche una versione ridotta chiamata SQL Server Mobile (ora chiamata SQL Server Compact e distribuita a fine 2006) dedicata alle applicazioni su dispositivi mobili.

### Edizioni

L'attuale versione 2019 prevede cinque diverse edizioni:
* Express: gratuita, con diverse limitazioni sulle funzionalità, sul numero di core (fino a 4), memoria RAM (fino a 1GB per istanza) e dimensione massima del database (10GB).
* Web: distribuita esclusivamente ai service provider, prevede le stesse funzionalità della versione Express con un massimo di 16 core, 64GB di memoria RAM per istanza e database fino a 524PB.
* Standard: fino a 24 core, 128GB di memoria RAM, database fino a 524PB. Edizione adatta a contesti aziendali. Può essere licenziato in modalità Server + CAL oppure per Core.
* Enterprise: l'edizione più completa, adatta a contesti mission-critical, per elevate richieste di performance. Consente un numero illimitato di core e di memoria RAM, con database fino a 524PB. Per questa edizione sono disponibili solamente le licenze per Core.
* Developer: stesse funzionalità della versione Enterprise, gratuita ma utilizzabile solo in contesti di sviluppo e non di produzione.

### Versioni per Windows

* 1993 - SQL Server 4.2, nome in codice SQLNT
* 1995 - SQL Server 6.0, nome in codice SQL95
* 1996 - SQL Server 6.5, nome in codice Hydra
* 1998 - SQL Server 7.0, nome in codice Sphinx
* 1999 - SQL Server 7.0 OLAP, nome in codice Plato
* 2000 - SQL Server 2000 32-bit, nome in codice Shiloh
* 2003 - SQL Server 2000 64-bit, nome in codice Liberty
* 2005 - SQL Server 2005 (sia 32-bit sia 64-bit), nome in codice Yukon (di cui è disponibile una versione gratuita, vedi sotto)
* 2008 - SQL Server 2008 (sia 32-bit sia 64-bit), nome in codice Katmai
* 2010 - SQL Server 2008 R2 (sia 32-bit sia 64-bit), nome in codice Kilimangiaro
* 2012 - SQL Server 2012 (sia 32-bit sia 64-bit), nome in codice Denali
* 2014 - SQL Server 2014 (sia 32-bit sia 64-bit), nome in codice SQL14
* 2016 - SQL Server 2016 64-bit, nome in codice SQL16
* 2017 - SQL Server 2017 64-bit, nome in codice Helsinki
* 2019 - SQL Server 2019 64-bit, nome in codice Seattle
* 2022 - SQL Server 2022 64-bit, nome in codice Dallas

### Build per Windows

| Version | RTM (no SP) | SP1 | SP2 | SP3 | SP4 |
| SQL Server 2022 | 16.0.1000.6 | | | | |
| SQL Server 2019 | 15.0.2000.5 | | | | |
| SQL Server 2017 | 14.0.1000.169 | | | | |
| SQL Server 2016 | 13.0.1601.5 | 13.0.4001.0 | 13.0.5026.0 | 13.0.6300.2 | |
| SQL Server 2014 | 12.00.2000.8 | 12.00.4100.1 | 12.00.5000.0 | 12.0.6024.0 | |
| SQL Server 2012 | 11.00.2100.60 | 11.00.3000.0 | 11.00.5058.0 | 11.00.6020.0 | 11.0.7001.0 |
| SQL Server 2008 R2 | 10.50.1600.1 | 10.50.2500.0 / 10.51.2500.0 | 10.50.4000.0 / 10.52.4000.0 | 10.50.6000.34 | |
| SQL Server 2008 | 10.00.1600.22 | 10.00.2531.0 | 10.00.4000.0 | 10.00.5500.0 | 10.00.6000.29 |
| SQL Server 2005 | 9.00.1399.06 | 9.00.2047 | 9.00.3042 | 9.00.4035 | 9.00.5000 |
| SQL Server 2000 | 8.00.194 | 8.00.384 | 8.00.532 | 8.00.760 | 8.00.2039 |
| SQL Server 7.0 | 7.00.623 | 7.00.699 | 7.00.842 | 7.00.961 | 7.00.1063 |
| SQL Server 6.5 | 6.50.201 | 6.50.213 | 6.50.240 | 6.50.258 | SP4 6.50.281 SP5 6.50.416 |
| SQL Server 6.0 | 6.00.121 | 6.00.124 | 6.00.139 | 6.00.151 | |
| SQL Server 4.21a | | | | | |