Benvenuto alla prima lezione del corso su SQL Server. Se stai leggendo questo un giovedì del 2026, da qualche parte sul pianeta c’è un’istanza di SQL Server vecchia di vent’anni che alimenta un sistema di fatturazione che nessuno vuole toccare. C’è anche un nuovissimo Azure SQL Database che si sta avviando in background di un’app che probabilmente usi tutti i giorni. SQL Server esiste dal 1989, che in anni-software è praticamente un’eternità, e fa girare più infrastruttura bancaria, sanitaria e governativa di quanto una persona sana di mente vorrebbe sapere.
Eppure se chiedi a dieci sviluppatori “cos’è SQL Server, davvero?” otterrai dieci risposte vaghe con parole come “database”, “Microsoft”, e “la cosa a cui si collega SSMS”. Non basta. Quindi partiamo dall’inizio.
SQL Server in una frase
SQL Server è un motore di database relazionale fatto da Microsoft, che parla un dialetto di SQL chiamato T-SQL, e che gira come servizio Windows (o demone Linux, o container) a cui ti connetti via rete.
Andiamo a spacchettare la frase, perché ogni parola sta facendo il suo lavoro.
Motore di database relazionale. Memorizza i dati in tabelle con righe e colonne. Le tabelle possono riferirsi tra loro tramite foreign key. Tu scrivi query dichiarative in SQL (“dammi tutti i clienti in Italia che hanno speso più di 1000€ il mese scorso”) e il motore capisce come ottenere la risposta. Questo in contrapposizione a, diciamo, MongoDB (documenti), Redis (chiave-valore), o Snowflake (un data warehouse colonnare con un modello di esecuzione diverso).
T-SQL. Sta per Transact-SQL. È il dialetto SQL Server dello standard SQL, con estensioni Microsoft-specifiche per variabili, logica procedurale (IF, WHILE, TRY ... CATCH), stored procedure, e un mucchio di funzioni che non esistono altrove (STRING_AGG, CONCAT_WS, ecc.). Buona parte dell’SQL che conosci da Postgres o MySQL funziona comunque. La parola chiave TOP, il tipo NVARCHAR, le [parentesi quadre] per gli identificatori, e la temuta funzione IIF() sono tutte invenzioni T-SQL.
Un servizio a cui ti connetti via rete. SQL Server non è un formato file come SQLite. Non apri semplicemente un file .db e cominci a fare query. È un processo server che ascolta su una porta TCP (di solito 1433), ti autentica, tiene i dati in memoria per velocità, e ti restituisce i risultati. Per parlare con lui usi un client: SSMS su Windows, Azure Data Studio su qualsiasi OS, VS Code con l’estensione mssql, DBeaver se già lo usi per tutto il resto, o il driver di database della tua applicazione.
Fatto da Microsoft, e questo conta. SQL Server è un prodotto commerciale. È strettamente integrato con Windows (anche se gira su Linux dal 2017), con Active Directory per l’autenticazione, con Azure per il cloud, con PowerShell per l’automazione, con SSMS per la gestione, e con quindici anni di tool e script per DBA alle spalle. Se sei nell’ecosistema Microsoft, probabilmente stai già usando SQL Server, lo sappia o no. Se sei nel mondo Google Cloud + Python + Postgres, probabilmente no.
La famiglia: non “SQL Server” ma “diversi SQL Server”
Quando la gente dice “SQL Server”, potrebbe intendere una di queste cose, e la differenza conta:
SQL Server (il prodotto on-prem)
Il classico. Lo installi su un server — fisico, VM, o container — e te lo gestisci da solo. Versioni supportate al 2026: 2019, 2022, e 2025. Paghi una licenza per core (più sui prezzi tra un attimo), e lo fai girare sul tuo hardware nel tuo data centre, o su una VM in Azure, AWS, o nel seminterrato di tuo padre.
Azure SQL Database
La versione cloud gestita. Non vedi la macchina, l’OS, o il servizio; ottieni solo un endpoint database. Microsoft si occupa di patch, backup, e monitoraggio del motore al posto tuo. Scegli una fascia di prezzo e paghi a ore. La maggior parte delle funzionalità di SQL Server on-prem c’è, alcune no (SQL Agent è sostituito da Elastic Jobs, le query cross-database sono limitate, ecc.), e qualche funzionalità solo-Azure si aggiunge sopra.
Azure SQL Managed Instance
A metà strada tra i due. Hai quasi tutto il set di funzionalità on-prem (incluso SQL Agent, query cross-database, il CLR), ma Microsoft gestisce comunque l’infrastruttura sottostante. Usato soprattutto da chi sta migrando un patrimonio legacy on-prem al cloud senza riscrivere tutto.
SQL Server su Macchine Virtuali Azure (IaaS)
Letteralmente “SQL Server il prodotto, installato su una VM che si dà il caso Microsoft ospiti”. Gestisci tutto tranne l’hardware fisico. Esiste per migrazioni dove vuoi zero cambiamenti di comportamento rispetto al tuo ambiente on-prem.
Azure Synapse / Microsoft Fabric
Sono le piattaforme analitiche di Microsoft che usano un motore di query in stile SQL Server ma sono prodotti fondamentalmente diversi, ottimizzati per workload di data warehouse. Parlano T-SQL. Non sono SQL Server. Se ti ritrovi a scrivere query contro Synapse Dedicated SQL Pool e una risposta su Stack Overflow dice “usa sp_Blitz”, non funzionerà. Stai attento a cosa chiami “SQL Server”.
In tutto questo corso intendiamo SQL Server 2019+ su qualsiasi piattaforma, oppure Azure SQL Database e Managed Instance dove la funzionalità esiste. Segnalerò esplicitamente le parti solo-cloud o solo-on-prem quando si presentano.
Edizioni, ovvero “come Microsoft vuole che tu spenda i soldi”
Dentro SQL Server on-prem ci sono diverse edizioni — lo stesso motore, con funzionalità accese o spente a seconda di quanto hai pagato.
Enterprise Edition. Set completo di funzionalità. Online index rebuild, Always On Availability Groups, compressione, partitioning con tutti i trimmings, TDE, Query Store, Resource Governor, RAM fino al massimo dell’OS. Prezzata per core, e fa piangere agli occhi. Circa 14.000 dollari per core a listino al 2025. Un server a due socket con 32 core è, controlla gli appunti, un’auto usata.
Standard Edition. La maggior parte delle funzionalità, alcune con restrizioni. RAM tappata a 128 GB per istanza. Niente Always On Availability Groups (fino a quando 2022 ha allentato la cosa), niente online index rebuild sotto Enterprise. Prezzata per core a circa 3.500 dollari per core a listino. La maggior parte delle PMI usa Standard. Va benissimo per il 90% dei workload.
Web Edition. Una variante più economica di Standard che solo gli web hoster possono rivendere. Se non sei uno di loro, non puoi comprarla.
Express Edition. Gratis. Limitata a 10 GB per database, 1 socket / 4 core, 1410 MB di buffer pool. Ottima per piccole app e demo. Niente SQL Agent, niente backup oltre quelli manuali, niente di “online”. È quella che useresti in un piccolo tool interno.
Developer Edition. Gratis, e ha tutte le funzionalità di Enterprise. Il trucco: legalmente non puoi usarla in produzione. Esiste per permettere agli sviluppatori di imparare, costruire, e testare contro lo stesso set di funzionalità che useranno quando la loro azienda alla fine pagherà per Enterprise. Questa è l’edizione che vuoi sul portatile per questo corso. La installeremo nella lezione 2.
Evaluation Edition. Una trial di 180 giorni di Enterprise. Esiste perché le grandi aziende possano testare il set completo prima di firmare la licenza.
Se mai leggi la documentazione di SQL Server e ti chiedi “perché il tutorial parla di Resource Governor e io non ce l’ho?” — probabilmente sei su Express o Standard. Controlla con SELECT @@VERSION; e l’edizione la vedrai lì.
Licensing: la parte che la documentazione non spiega
Microsoft licenzia SQL Server per numero di core per Enterprise e Standard, con un minimo di 4 core per macchina. C’è un modello più vecchio “Server + CAL” che esiste ancora per Standard Edition, prezzato per server più una “client access licence” per utente o dispositivo. La maggior parte delle grandi aziende è passata al licensing per core perché cloud e VM hanno reso impossibile fare audit del licensing per CAL.
Qualche trappola che vale la pena conoscere prima di impegnarti con Microsoft per il prossimo progetto:
- L’hyperthreading conta. Su un server fisico, ogni core logico tipicamente viene licenziato, il che raddoppia la bolletta. Le macchine virtuali si licenziano per vCPU allocata.
- Azure Hybrid Benefit. Se possiedi già licenze SQL Server con Software Assurance, puoi “portarti la tua licenza” su Azure e risparmiare significativamente. È l’unico programma Microsoft che fa risparmiare sul serio.
- Software Assurance non è opzionale se mai vuoi usare Always On, Power BI Report Server, stretched database, o failover di cluster. SA è la tassa di abbonamento sopra alla licenza.
- Developer Edition per dev, Express o Standard per prod. Mai e poi mai spedire Developer Edition in produzione; è contrattualmente vietato e gli audit di licensing di Microsoft non sono un bel momento. Express in prod va bene ed è legale se i tuoi dati stanno sotto i 10 GB.
Niente di tutto questo conta per il corso. Installerai Developer Edition sul portatile e non vedrai mai una finestra di dialogo sulle licenze. Ma se lavori in un’azienda che usa SQL Server e ti sei mai chiesto perché il DBA si irrigidisce quando qualcuno chiede di tirare su “un’altra istanza”, è perché la licenza ti sta guardando.
Quando SQL Server è la risposta giusta
SQL Server è una scelta eccellente quando:
- Hai già lo stack Microsoft (.NET, Active Directory, server Windows, Azure).
- Vuoi un OLTP profondo + reporting da un solo motore, senza dover bullonare un altro database.
- Il tuo DBA conosce SQL Server e vuoi tenerlo sano di mente.
- Hai bisogno di funzionalità enterprise: Availability Groups, TDE, sicurezza fine, auditing, Query Store, Temporal Tables.
- Stai costruendo su Azure e vuoi un database gestito nativo con integrazione profonda nell’ecosistema.
SQL Server non è probabilmente la risposta giusta quando:
- Vuoi qualcosa di gratuito e non ti serve il set di funzionalità. (Postgres è la scelta ovvia.)
- Il tuo workload è pura analitica su scala di petabyte. (Snowflake, BigQuery, o Synapse/Fabric.)
- Ti servono scritture multi-master geo-distribuite tra continenti. (Cockroach, Spanner, DynamoDB.)
- Sei una startup con una persona sola che non vuole mai vedere una fattura da Microsoft. (Postgres, di nuovo.)
Non è uno sfogo sul licensing, anche se un po’ lo sembra. La risposta onesta è: SQL Server è un ottimo database che costa soldi veri, e dovresti usarlo quando i soldi ti comprano qualcosa che le alternative non hanno. Altrimenti usa Postgres e goditi la vita.
Saluta Runehold, l’azienda per cui lavorerai
Ogni lezione di questo corso usa la stessa azienda fittizia come esempio ricorrente, perché gli esempi astratti non si fissano mai come quelli reali.
Saluta Runehold B.V. — una società privata olandese (“besloten vennootschap”) con sede ad Amsterdam, fondata nel 2019, che ora impiega circa 180 persone e fattura circa 45 milioni di euro all’anno. Runehold vende oggetti fisici a tema fantasy in tutta l’UE: lampade da scrivania a forma di pinguino, kit di lavanderia “auto-piegavaggi” (male), strofinacci “lievemente maledetti”, pezzi da collezione in edizione limitata, giochi da tavolo, e puzzle. Il magazzino centrale è a Poznań, in Polonia, perché l’affitto è ragionevole e i corrieri sono efficienti. Ci sono tre flagship store fisici — Amsterdam, Berlino, Milano — e altri due previsti per Parigi e Madrid. Runehold vende attraverso il proprio sito (circa il 60% del fatturato), tramite gli storefront Amazon/eBay UE (25%), e nei negozi fisici (15%).
Il prodotto in abbonamento si chiama Runeboxes — una spedizione mensile curata in tre fasce: Apprentice (15€/mese), Journeyman (29€/mese), e Loremaster (55€/mese). Circa 22.000 abbonati attivi in tutta l’UE.
Team che incontrerai nei dati durante il corso:
- Sales — clienti B2C più un B2B in crescita
- Marketing — campagne a pagamento per paese e canale
- Catalog — circa 8.000 SKU, tassonomia di prodotto, prezzi
- Operations — magazzino, inbound, outbound, conteggi inventario
- Shipping — corrieri, tracking, resi (inclusa la coda speciale “haunted returns” per prodotti che si rivelano davvero incantati, cosa che succede più spesso di quanto pensi)
- Retail — i tre flagship store, POS in negozio
- Customer Support — multilingua, soprattutto inglese/olandese/tedesco/italiano
- Finance — fatturazione, IVA (Runehold usa l’EU One-Stop-Shop, più avanti vedremo i dettagli), regolamenti SEPA, riconoscimento dei ricavi
- Engineering / Data — siamo noi
- HR — dipendenti, team, costi
- Legal / Compliance — GDPR, Digital Services Act, direttive sui diritti dei consumatori
Man mano che il corso procede, vedrai tabelle come Sales.Order, Catalog.Product, Inventory.Stock, Shipping.Shipment, Finance.Invoice, Support.Ticket. Ognuna è un pezzo della reale operatività di Runehold. Gli acronimi che fanno funzionare il business — CAC (Customer Acquisition Cost), LTV (Lifetime Value), AOV (Average Order Value), GMV (Gross Merchandise Value), NPS (Net Promoter Score), IVA (Imposta sul Valore Aggiunto), OSS (One-Stop-Shop), SEPA (Single Euro Payments Area), SKU (Stock Keeping Unit), OTIF (On Time In Full) — appariranno come query che eseguiamo davvero contro questi dati, non come liste di vocaboli.
Non è un’azienda da manuale con tre tabelle e arcobaleni. È un retailer EU realistico con problemi realistici. L’SQL che impari scrivendo query per Runehold è l’SQL che scriveresti su un lavoro vero.
Cosa il corso assume sulla tua configurazione
A partire dalla lezione 2 installeremo SQL Server 2022 Developer Edition sul tuo portatile (Windows, Mac, o Linux, tutti supportati in un modo o nell’altro) e il client SSMS o Azure Data Studio. Ogni esempio di codice del corso girerà su una semplice installazione Developer Edition se non specifico altrimenti. Qualche lezione verso la fine (il First Responder Kit, sp_WhoIsActive, gli approfondimenti di Query Store) potrà beneficiare opzionalmente di una macchina un po’ più carrozzata o di una VM, ma puoi fare tutto il corso su un portatile modesto.
Non serve esperienza pregressa con SQL. Questo corso parte da “cos’è una tabella” e costruisce da lì, assumendo che tu sia una persona tecnicamente incline che non ha mai lavorato con un database prima. Se conosci già bene SQL, probabilmente puoi saltare le lezioni da 1 a 8 e partire dalla 9 (i join). Se sei a un livello intermedio di SQL e vuoi solo le parti specifiche di SQL Server, salta al modulo 4 (gli indici). Le lezioni dalla 37 alla 40, l’Emergency Kit, valgono il loro peso anche se fai questo mestiere da dieci anni.
Esegui questo sulla tua macchina — beh, quasi
Non hai ancora installato niente, quindi non possiamo proprio eseguire SQL adesso. Ma puoi già scegliere il tuo percorso per la lezione 2:
- Sei su Windows? Bene. Installerai SQL Server Developer Edition direttamente.
- Sei su Mac? Farai girare SQL Server in un container Docker. Funziona splendidamente.
- Sei su Linux? Stesso approccio Docker, oppure un’installazione nativa su Ubuntu/RHEL.
- Vuoi saltare del tutto l’installazione locale? Tira su un Azure SQL Database fascia gratuita. Anche su quello girerà ogni query del corso.
Tutti e quattro i percorsi prendono circa 20 minuti dall’inizio alla fine. La lezione 2 ti accompagna in ognuno di loro, con una nota finale su come scegliere tra SSMS e Azure Data Studio come editor.
Ci vediamo lì.