Tutto su SQL Server

SQL Server è un DBMS - Database Management System relazionale sviluppato da Microsoft. Si tratta di una delle piattaforme dati più diffuse al mondo e viene utilizzato per gestire database delle dimensioni e strutture più disparate.


Non ci stancheremo mai di ripeterlo: i dati sono importanti e valorizzarli è fondamentale per qualsiasi azienda. Ecco quindi una panoramica su tutto quello che c'è da sapere sui dati aziendali e la loro elaborazione con il DBMS SQL Server di Microsoft.


Se hai bisogno di aiuto con il tuo SQL Server, siamo a disposizione. Prenota ora un appuntamento con i nostri esperti, valuteremo la tua situazione e capiremo come possiamo rendere i tuoi database stabili e veloci.

Cos'è Microsoft SQL Server?

SQL Server è un DBMS (Database Management System) relazionale sviluppato da Microsoft. Si tratta di una delle piattaforme per basi di dati più diffuse al mondo, assieme ad Oracle database e a MySQL. Viene utilizzato per gestire database delle dimensioni e strutture più disparate.


A cosa serve SQL Server?

SQL Server è una piattaforma dati che si utilizza per creare e gestire database, principalmente in ambito aziendale. SQL Server utilizza il linguaggio SQL, come la maggior parte dei database relazionali, in una versione particolare creata da Microsoft e che prende il nome di T-SQL.


Versioni ed edizioni di SQL Server

Versioni di SQL Server

Una versione è una distribuzione di SQL Server, che viene periodicamente aggiornato con migliori funzioni e performance e maggiori affidabilità e sicurezza. Nell'arco di vita di una versione (solitamente 10 anni), vengono aggiunte nuove funzionalità e risolte eventuali criticità. La prima versione di SQL Server, la 1.0, risale al 1989. Ogni versione introduce parecchie novità e funzionalità innovate, ad esempio, dalla versione 2016, SQL Server è compatibile anche con i sistemi operativi Linux. L'ultima versione pubblica è SQL Server 2022, disponibile da gennaio 2023, che Microsoft definisce “the most Azure enabled release”, ovvero la release di SQL Server maggiormente predisposta all’integrazione con Azure mai realizzata. Con questa versione, SQL Server supera i 30 anni di storia.

Edizioni di SQL Server

Le edizioni, invece, sono le varie tipologie di piattaforma SQL Server con scopi, utilizzi e prezzi differenti. Le edizioni gratuite disponibili con la versione più aggiornata del DBMS sono la Express e la Developer, mentre a pagamento troviamo le edizioni Standard ed Enterprise, a cui si aggiunge l'edizione Web per uso specializzato, disponibile solo in hosting. Sono inoltre disponibili una serie di edizioni specializzate come Azure SQL Database, completamente in cloud.


SQL Server End of Support

Microsoft pubblica in anticipo le date di fine del supporto alle varie versioni di SQL Server, ed è consigliato di utilizzare sempre un prodotto che sia coperto dal Mainstream Support o almeno dal supporto esteso. Questo per diversi motivi: un prodotto aggiornato è più sicuro, più ottimizzato e contiene funzionalità innovative, non disponibili nelle versioni precedenti. Ad esempio, SQL Server 2019 introduce, tra le altre cose, una funzionalità di elaborazione delle query intelligente e i Big Data Cluster. Recentemente, è terminato il supporto esteso per SQL Server 2012, mentre la prossima versione ad arrivare alla fine del supporto sarà SQL Server 2014, il 9 luglio 2024. 


Oltre a scegliere quando possibile la versione più recente, è importante applicare gli aggiornamenti periodici e di sicurezza, che vanno a risolvere bug e vulnerabilità, oltre che introdurre miglioramenti e nuove funzioni. Tramite la corretta gestione di un'impostazione importante come il livello di compatibilità tra le varie versioni di SQL Server, potremo aumentare le prestazioni dei nostri database e assicurarci che il nostro sistema sia sempre aggiornato e a punto.


Vuoi rimanere sempre aggiornato sul mondo SQL Server e ricevere tutte le novità? Iscriviti al nostro blog.

Licenze di SQL Server

Microsoft mette a disposizione due principali tipologie di licenze: quelle per Core, disponibili per le edizioni Enterprise e Standard, e quelle per CAL/Server, disponibili solo per l'edizione Standard. Nella scelta della licenza appropriata per SQL Server on-premises ci sono diversi aspetti che conviene prendere in considerazione,  come le regole stabilite da Microsoft e il funzionamento del licensing per quanto riguarda virtualizzazione e Software Assurance


La scelta può risultare complessa, perciò ecco la nostra guida al licensing di SQL Server. Occorre notare che la versione Developer, dedicata in particolare agli sviluppatori e le cui funzionalità sono equiparabili alla Enterprise, può essere usata in modo del tutto gratuito, ma solo ed esclusivamente in ambienti di sviluppo e test.


Una novità relativa al licensing 2022 è la durata della Software Assurance, che passa da 2 a 3 anni. Rimane sempre la possibilità di noleggiare le licenze SQL Server per Core, per un periodo della durata di 1 o 3 anni.


Quanto costa SQL Server?

Il costo di SQL Server dipende dal tipo e dal numero complessivo di licenze che vengono acquistate. Le versioni Express e Developer sono gratuite, mentre la versione Standard segue il seguente pricing di listino:

Per Core - pacchetto da 2 Core: 3.945 dollari, circa 3.637 euro.

Per Server+Cal - Server: 989 dollari, circa 912 euro - CAL: 230 dollari, circa 212 euro.

                            

La versione Enterprise invece segue il prezziario:

Per Core - pacchetto da 2 Core - 15.123 dollari, circa 13.940 euro.


I prezzi sono aggiornati con i dati forniti da Microsoft ad Agosto 2023 in riferimento all'edizione SQL Server 2022. Occorre notare che il numero minimo di core da licenziare è quattro, anche se la macchina su cui è installato SQL Server dovesse presentarne un numero minore.


La manutenzione di SQL Server

Configurare l'infrastruttura e scegliere le licenze adatte non è sufficiente a garantire il corretto funzionamento di SQL Server. Vanno infatti previsti controlli periodici della configurazione e dello stato di salute di server e database, che prendono il nome di Health Check. Grazie a queste verifiche regolari è possibile individuare le eventuali criticità e risolverle prima che diventino problemi bloccanti per il business e la produzione aziendale.


Gli Health Check di SQL Server vengono effettuati dall'amministratore di database (o DBA), che si occupa in prima persona della corretta gestione dell'istanza e dei database, effettuando la manutenzione periodica e controllando il buon funzionamento del sistema. Un'infrastruttura database che riceve una manutenzione appropriata e regolare sarà più stabile e veloce, con il risultato di rendere i programmi che si appoggiano ai database a loro volta più veloci e sicuri. Per rispondere a queste precise necessità, abbiamo sviluppato un servizio di amministrazione database gestito per aziende. Per le realtà che non possiedono o non possono dotarsi di un DBA interno o avvalersi dei servizi di un consulente, abbiamo realizzato il sistema di controllo automatico dello stato di salute e della configurazione di SQL Server, SQL Catcher, disponibile gratuitamente.


Monitorare SQL Server

Come abbiamo visto, controllare periodicamente lo stato di salute di un database server è fondamentale per assicurarsi del buon funzionamento dell’infrastruttura database e della corretta disponibilità dei sistemi, e quindi per garantire le prestazioni necessarie al corretto funzionamento delle attività aziendali. 

Grazie ad un piano aggiornato di verifica di tutti gli aspetti significativi relativi al database server, il DBA può intervenire in anticipo, risolvendo le criticità prima che queste diventino bloccanti, idealmente ancora prima che gli utenti si rendano conto dell’esistenza di un rallentamento. Inoltre, un sistema in salute è fondamentale per garantire la sicurezza e l’integrità dei dati.

Nell’ambito del monitoraggio di SQL Server le notifiche proattive possono rivelarsi molto utili per chi amministra i database. Sono disponibili sul mercato svariati strumenti per il monitoraggio, come ad esempio Paessler PRTG, Quest Foglight, Red Gate SQL Monitor e altri. Questi strumenti forniscono una visualizzazione unificata in cui sono visibili tutti gli avvisi in un unico colpo d'occhio. Solitamente la maggior parte di questi strumenti sono preconfigurati e per iniziare ad utilizzarli è sufficiente indicare su quale server attivare il monitoraggio, anche se questo sistema non garantisce la correttezza e non consente la personalizzazione dei parametri monitorati.

Oltre agli strumenti esterni a disposizione del DBA che abbiamo appena visto, sono disponibili in SQL Server diverse opzioni integrate per il monitoring, tra cui gli Extended Events o Eventi Estesi. Si tratta di un sistema di monitoraggio delle prestazioni che consente di catturare eventi a livello di sistema, di singolo database e di sessione, con lo scopo di eseguire debug, profiling e troubleshooting delle prestazioni. Gli Eventi Estesi possono inoltre essere utilizzati per raccogliere dati su qualsiasi attività dei database, dai tempi di esecuzione delle query alle operazioni di I/O del disco.

Performance tuning in SQL Server

Performance tuning significa letteralmente ‘ottimizzazione delle prestazioni’ e, in effetti, si tratta proprio di questo: misurare, analizzare e ottimizzare le prestazioni di SQL Server, in modo da rendere l’intero sistema più veloce, più sicuro e più stabile.


Di norma, quando si effettua performance tuning in SQL Server, si parte con l’ottimizzazione di query ed indici, che sicuramente costituiscono due aspetti fondamentali da tenere in considerazione. Non sono però gli unici, in quanto un tuning effettuato a regola d’arte va ad analizzare e migliorare anche le prestazioni dell’infrastruttura hardware, le impostazioni di server e database, i file di log e di dati e tutte quelle componenti che fanno parte o supportano l’ambiente SQL Server. Come abbiamo visto, gli indici vanno manutenuti e aggiornati oppure, quando non servono più, vanno rimossi, dopo aver verificato che l'eventuale cancellazione dei bad index non crei danni o malfunzionamenti.


Un aiuto alle prestazioni può arrivare dalla funzionalità FILESTREAM, introdotta con SQL Server 2008, che consente di integrare il motore del database con il file system NTFS del sistema operativo e archiviare i dati BLOB direttamente nel file system. 


SQL Server Query Store è uno strumento che agisce come un “registratore”, fornendo una preziosa cronologia delle esecuzioni delle query e delle prestazioni nel tempo. Questo strumento è progettato per aiutare gli amministratori di database a identificare rapidamente le query problematiche e a risolvere i problemi di prestazioni.


La sicurezza in SQL Server

In ambito database, quando si parla di sicurezza si intende un insieme di strumenti, controlli e misure necessarie per preservare la riservatezza, l'integrità e la disponibilità di un DBMS (Database Management System) e del suo contenuto, ovvero i dati in esso memorizzati, ma non solo. 

Queste procedure di sicurezza riguardano tutto lo stack dati: i dati contenuti nei database, il servizio di gestione dei dati come SQL Server, eventuali applicazioni associate, il database server fisico e l'hardware sottostante, l'infrastruttura informatica e la rete utilizzate per accedere al DBMS.

Non esistono avvisaglie o segnali premonitori di un attacco informatico: spesso, quando ci si rende conto di essere stati vittima di malintenzionati, è già troppo tardi ed i dati aziendali sono ormai compromessi o perduti. 

Il mercato offre numerose applicazioni e servizi di consulenza specializzati nella sicurezza informatica, ma gli aspetti relativi a SQL Server spesso vengono trascurati o non sono approfonditi a sufficienza. Inoltre, le configurazioni applicate di default durante una installazione tipica di SQL Server non garantiscono un livello di sicurezza ottimale.

Mantenere aggiornato il proprio sistema e applicare le best practices aiuta non solo a garantire sicurezza ma anche a migliorare la gestione di SQL Server, facilita la sua manutenzione e l’applicazione di aggiornamenti e patch.

Uno dei metodi più diffusi per garantire la sicurezza di SQL Server sono le chiavi primarie o primary key: si tratta di uno degli elementi fondamentali della progettazione di un database relazionale in quanto garantiscono l'integrità dei dati, migliorando anche le prestazioni delle query. Una chiave primaria è un vincolo che identifica in modo univoco ogni riga in una tabella.

Un'altra tutela per la sicurezza è garantita dalla Database Master Key, una chiave di sicurezza a livello di database che viene utilizzata per proteggere le altre chiavi presenti, viene infatti utilizzata per crittografare le chiavi private dei certificati, altre chiavi asimmetriche e le “scoped credentials”.

Per proteggere i dati, una possibilità è la Transparent Data Encryption (TDE), che  esegue la crittografia e la decrittografia delle operazioni di I/O di file di dati e log in tempo reale. Per la crittografia viene usata una chiave di crittografia del database (DEK).  Con le successive versione di SQL Server, vengono implementate nuove funzionalità anche per quanto riguarda l'encryption, come in SQL Server 2022.

Inoltre, SQL Server propone un approccio granulare alla sicurezza, con la possibilità di gestire le autorizzazioni fino al livello di singole colonne e righe.

Backup e restore con SQL Server

Il recupero o restore dei dati e dei database è un aspetto cruciale della gestione di SQL Server. Quando si verificano incidenti o errori, come ad esempio cancellazioni accidentali o guasti hardware, la capacità di ripristinare i dati è fondamentale per mantenere la continuità operativa del business. 


In SQL Server sono disponibili diversi tipi di restore, con diverse caratteristiche:

  • Restore Completo (Full Restore)
  • Restore Differenziale (Differential Restore)
  • Restore delle Transazioni (Transaction Log Restore)

Ovviamente, ogni tentativo di recupero di SQL Server è subordinato alla corretta gestione dei backup e, per garantire la massima rapidità possibile nel ripristino dell'operatività, di un buon recovery plan.

Prima di procedere con la stesura di un piano di backup, occorre analizzare l'infrastruttura database e il funzionamento delle applicazioni che vi si appoggiano, tenendo presente che anche tra gli addetti ai lavori circolano molti falsi miti sui backup, che possono causare difficoltà.
 

Come scegliere SQL Server

Un amministratore di database con esperienza sarà in grado di effettuare le scelte corrette anche in termini di progettazione e sviluppo dell'infrastruttura database. A seconda delle esigenze aziendali e delle caratteristiche dell'infrastruttura IT e dei programmi utilizzati, si sceglierà un'edizione come la Standard piuttosto che l'Enterprise. Va inoltre valutata la compatibilità della versione con gli applicativi utilizzati.

SQL Server su Azure

Il linguaggio di SQL Server

SQL Server utilizza il linguaggio Transact-SQL, o T-SQL, sviluppato da Microsoft sulla base di SQL (Structured Query Language) di IBM, adottato poi come standard ISO dal 1987, e supporta anche SQL standard, con cui però mantiene alcune differenze. T-SQL impiega delle interrogazioni, dette query, per manipolare i dati contenuti nelle tabelle del database. Per interagire e manipolare i dati in SQL Server, viene solitamente utilizzato SQL Server Management Studio, un programma sviluppato appositamente da Microsoft.


Per gestire le impostazioni occorre un'utenza SA, ovvero System Administrator. Quest'utenza va protetta e conservata con cura, anche se esistono alcune strategie che è possibile tentare per recuperare la password perduta


SQL Server  organizza i dati in tabelle e di solito le tabelle sono in relazione tra di loro tramite campi chiave, come per esempio chiavi esterne e chiavi primarie. Possiamo utilizzare delle operazioni di JOIN per interrogare i dati da tabelle diverse e correlare i record (le righe) che sono in relazione tra loro. Due tipologie di join in SQL Server sono CROSS JOIN e INNER JOIN, ma esistono anche altre possibilità. Ad esempio, è possibile simulare un FULL OUTER JOIN in diversi modi.


Come in ogni DBMS, anche in SQL Server è fondamentale utilizzare i tipi di dato corretti e valutare se vale la pena di sfruttare soluzioni particolari come i tipi di dato GUID, le operazioni di PIVOT e UNPIVOT, e gestire correttamente il valore NULL.


SQL Server è dotato di una serie di protocolli di rete che gestiscono la connessione agli altri sistemi. Ciascuno di questi protocolli è  dotato di una serie di opzioni che è possibile abilitare per configurare al meglio la connessione tra l'istanza SQL Server e le connessioni client.


Un altro aspetto da considerare è la Collation, ovvero l'insieme di regole e impostazioni che determinano come i caratteri vengono interpretati durante pressoché ogni fase di elaborazione e manipolazione degli stessi, all'interno di un'istanza di SQL Server.


SQL Server Management Studio e altri strumenti per SQL Server

Questo tool sviluppato da Microsoft è, come visto sopra, il principale modo per interfacciarsi con SQL Server, e può essere utilizzato per manipolare e interrogare i dati contenuti nei database.


Più precisamente, SQL Server Management Studio è un ambiente per la gestione delle infrastrutture SQL, come database SQL Server on premises o Azure SQL Database, ma anche strumenti per la Business Intelligence come Analysis Services, Integration Services e Reporting Services. Viene utilizzato per monitorare, configurare e gestire istanze e database differenti, lavorando in un unico ambiente. Il tool è in grado di interfacciarsi con tutti i componenti di SQL Server, database SQL di Azure e SQL Data Warehouse.


SSMS consente di automatizzare le attività ricorrenti effettuate, al fine di velocizzare le operazioni che solitamente un DBA o uno sviluppatore eseguono tramite SSMS utilizzando quante più shortcut possibili.


IndexOptimize non è un vero e proprio strumento, ma una Stored Procedure per la manutenzione degli indici e delle statistiche in SQL Server. Nello specifico si vuole mostrare come lo strumento con un minimo di studio ci permette di superare ampiamente e brillantemente i limiti del Maintenance Plan standard di Microsoft. Inoltre, IndexOptimize può essere sfruttato per l'aggiornamento delle statistiche, grazie alla funzione Update Statistics.


Un interessante componente aggiuntivo di SQL Server è  ‘Full-Text Search’, una tecnologia che consente di effettuare query su grandi quantità di dati testuali, strutturati e non, nel modo più veloce ed efficiente possibile.


Un DBA, inoltre, può  creare degli utility script in Python per interagire con SQL Server, interrogare ed analizzare viste diagnostiche, visualizzare graficamente i dati ottenuti e leggere i dati da un file Excel/csv e portarli dentro ad una tabella di un database.

SQL Server in cloud e Azure

Sempre più aziende scelgono di utilizzare la tecnologia cloud, che si sta rivelando una soluzione ottimale sia per risparmiare sui costi hardware e di gestione delle infrastrutture database che per garantire innovazione e digitalizzazione in azienda.


Iaas, Paas e Saas sono tre acronimi che indicano diverse tipologie di servizi cloud. In particolare, indicano una maggiore o minore incidenza del provider cloud nella gestione delle rispettive piattaforme. Facendo riferimento a SQL Server, nelle installazioni on-premises, ovvero in locale, ogni aspetto relativo ai database viene gestito internamente, quindi da locale, a partire dal database server fino ai dati e alle applicazioni. Invece, nella famiglia Azure SQL, a seconda del tipo di servizio scelto, diversi aspetti vengono gestiti direttamente da Microsoft. Uno dei principali vantaggi delle soluzioni Azure SQL è che viene sempre mantenuta come base il motore di database di SQL Server, quindi per utilizzare SQL Server su Azure non vengono richieste nuove competenze rispetto all’utilizzo on-premises.


Tips & Tricks con SQL Server

Ci sono numerosi accorgimenti per migliorare la configurazione e le prestazioni di SQL Server, che si apprendono ed affinano con l'esperienza nella gestione dei database. Ad esempio, una funzionalità come l'autogrowth  deve essere impostata nella maniera corretta per evitare un'eccessiva crescita del database, che può arrivare, in caso di configurazioni errate, ad esaurire rapidamente lo spazio su disco. 


Un'altra funzione utile sono gli Always On Availability Groups disponibili con SQL Server Standard, una soluzione di high availability che supporta un ambiente di failover per un singolo database. 


Per apprendere in modo efficace come si amministra ed utilizza nella quotidianità operativa un database SQL Server, abbiamo constatato nella nostra esperienza l'efficacia del metodo training on the job, che affianca la formazione teorica ad esperienze reali, acquisite sul campo e trasmesse in affiancamento. Questo tipo di insegnamento è facilmente modulabile e personalizzabile e consente di concentrarsi sulle reali esigenze aziendali, con approfondimenti verticali sui vari aspetti dell'amministrazione di SQL Server.


Un aspetto che può apparire scontato ma che conviene sempre sottolineare e tenere sotti controllo, è l'importanza di aggiornamenti costanti e puntuali, per evitare vulnerabilità specifiche come il malware MbrMiner o il il più recente Maggie, che sfrutta le backdoor.


SQL Server offre diversi livelli di isolamento per gestire il modo in cui le transazioni interagiscono tra loro, come il livello Read Committed Snapshot Isolation (RCSI), una variante del livello di isolamento Read Committed che utilizza la tecnologia di versioning delle righe (Snapshot) per creare una “istantanea” dei dati al momento in cui inizia la transazione. Questo permette di evitare fastidiosi lock quando si leggono i dati, migliorando le prestazioni complessive.     




Servizi e componenti di SQL Server 

Vediamo quali sono i principali componenti di SQL Server:

  • Motore del database.
  • SQL Server, il servizio che gestisce le varie istanze di Microsoft SQL Server.
  • SQL Server Agent, ricopre il ruolo di Task Scheduler.
  • SQL Server Browser, gestisce le richieste e connette le istanze coinvolte.
  • SQL Server Full-Text Search, per eseguire query di testo.
  • SQL Server VSS Writer, per il backup e il restore dei dati.

In SQL Server è disponibile inoltre un'ampia serie di componenti e servizi aggiuntivi. Si tratta di una serie di funzioni accessorie non fondamentali per il funzionamento del database ma che possiedono un alto valore aggiunto per esigenze specifiche. Tra questi troviamo gli Analysis Services (SASS), gli Integration Services (SSIS) e i Reporting Services (SSRS), tutti ampiamente utilizzati in ambito Business Intelligence.


Esistono anche funzioni particolari per esigenze specifiche, come ad esempio i linked server per far  comunicare SQL Server con un database Oracle. Si trovano inoltre integrati strumenti per realizzare un piano di backup, che dovrebbe essere sempre previsto per qualsiasi sistema informatico. 


Un altro scenario è quello di SQL Server utilizzato in cloud, con la gamma differenziata di servizi di Microsoft Azure SQL.


Disastri informatici e prevenzione in SQL Server

Un disastro informatico si può definire come un evento inaspettato, di vario tipo, che provoca una grave emergenza a livello del funzionamento dei sistemi informatici. Per quanto riguarda in particolare i database SQL Server, un disastro provoca la perdita o il danneggiamento, anche parziali, dei dati memorizzati nei database, con conseguenze sul business che possono risultare molto gravi.


Anche se le minacce sono numerose, è possibile attuare diverse strategie di prevenzione dei disastri, anche con strumenti nativi in SQL Server, come ad esempio i backup, il log shipping e il AlwaysOn Failover Clustering (FCI).


Il backup in SQL Server

Il backup dei database è una parte fondamentale di qualsiasi piano di disaster recovery. Sono indispensabili per garantire la disponibilità dei dati in caso di perdita, corruzione o altri problemi. Recuperare i dati: i backup possono essere utilizzati per recuperare i dati in caso di perdita o di problemi di integrità dei database.

Tramite i diversi tipi di backup è possibile:
  • Garantire la sicurezza dei dati: i backup garantiscono la sicurezza dei dati, poiché possono essere utilizzati per ripristinare il database in caso di guasti hardware o altri problemi tecnici.
  • Ottenere la compliance: alcuni settori sono soggetti a normative che richiedono la conservazione dei dati per un periodo di tempo specifico. I backup possono essere utilizzati per soddisfare queste esigenze.
  • Recuperare i dati: i backup possono essere utilizzati per recuperare i dati in caso di perdita accidentale o di problemi di integrità del database.

Come iniziare ad utilizzare SQL Server

Per iniziare ad utilizzare SQL Server si può scaricare ed installare una delle versioni gratuite ed iniziare subito a sperimentare. Per acquisire un livello discreto di abilità nell'utilizzo del DBMS, può essere molto utile seguire un corso di formazione professionale su SQL Server, possibilmente con il metodo del training on the job.


Certificazioni e competenze Microsoft

Microsoft propone un ricco programma di certificazioni ufficiali e di esami per verificare le competenze dei partner. Datamaze è Microsoft Silver Partner in Data Platform e Data Analytics. Inoltre, ci impegniamo a migliorare ogni giorno le nostre competenze, come attestano le certificazioni ufficiali ottenute dai nostri collaboratori.