Cos’è Sql Server

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 e a MySQL. Viene utilizzato per gestire database delle dimensioni e strutture più disparate.

A cosa serve?

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

Versioni ed edizioni

Versioni Microsoft Sql Server
Edizioni Sql Server

Versioni di SQL Server

Una versione è una distribuzione di SQL Server, aggiornato con migliori funzioni e performance e maggiori affidabilità e sicurezza. Nell’arco di vita di una versione, vengono aggiunte 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.

Edizioni di SQL Server

Le edizioni, invece, sono le varie tipologie di piattaforma con scopi, utilizzi e prezzi differenti. Le edizioni gratuite disponibili con la versione più aggiornata del DBMS sono la Express e la Developer. 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.


Licenze di SQL Server

Microsoft mette a disposizione due principali tipologie di licenze:

  • quelle per Core, disponibili per le versioni Enterprise e Standard
  • quelle per CAL/Server, disponibili solo per la versione Standard.

Nella scelta della licenza appropriata per SQL Server ci sono diversi aspetti che conviene prendere in considerazione nel licenziare SQL Server. 

A partire da SQL Server 2019 è disponibile anche il licensing per Big Data Cluster. La versione Developer, dedicata in particolare agli sviluppatori, può essere usata in modo del tutto gratuito, ma solo 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 una durata di 1 o 3 anni.

Performance tuning

Performance tuning significa letteralmente “ottimizzazione delle prestazioni”. Si tratta di misurare, analizzare e ottimizzare le prestazioni di SQL Server, in modo da rendere l’intero sistema più veloce, più sicuro e più stabile.

Di solito, quando si effettua performance tuning in SQL Server, si parte con l’ottimizzazione di query ed indici, due aspetti fondamentali da tenere in considerazione.

Non sono però gli unici. Un tuning effettuato a regola d’arte va ad analizzare e migliorare anche le prestazioni di tutte quelle componenti che fanno parte dell’ambiente 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. In caso di configurazioni errate, si può arrivare ad esaurire rapidamente lo spazio su disco. 


In seguito vedremo come installare Sql Server in ambiente Linux e come affrontare i problemi che potrebbero presentarsi.

Database in modalità Suspect

Un database sospetto è un database ritenuto compromesso da SQL Server che, per ragioni di sicurezza, imposta il flag “sospetto” ed impedisce l’accesso ai dati. Le possibili possono essere:

  1. file fisici sul file system corrotti (i motivi potrebbero essere di natura software (virus) o hardware (hard disk danneggiato))
  2. spazio libero su disco insufficiente
  3. Memoria RAM insufficiente
  4. i file risultano aperti da un altro software quindi con accesso negato
  5. uno spegnimento inaspettato del computer o l’arresto inaspettato dei servizi di SQL Server
  6. Il sistema non riesce ad aprire il dispositivo in cui risiedono i dati o il file di registro del server SQL
  7. Il server SQL si arresta in modo anomalo o si riavvia nel mezzo di una transazione, risultando in un file di registro delle transazioni corrotto o inaccessibile
  8. SQL Server tenta di aprire un database e il file appartenente a quel database è già aperto dal software antivirus installato sul sistema
  9. SQL non può completare un’operazione di rollback o rollforward.

Il primo tentativo è quello di togliere il flag di sospetto al database.

exec sp_resetstatus DBNAME

Il passo successivo è impostare il database in emergenza. In questa modalità i dati del database, se non corrotti, torneranno ad essere accessibili, poi, tramite il comando DBCC, sarà possibile effettuare un check degli oggetti del database. Lanciare i comandi sotto indicati uno alla volta in modo da analizzare sempre l’output restituito.

alter database DBNAME set emergency

dbcc checkdb(‘DBNAME’) alter database DBNAME set SINGLE_USER with ROLLBACK IMMEDIATE

dbcc checkdb(‘DBNAME’,REPAIR_ALLOW_DATA_LOSS)

alter database DBNAME set MULTI_USER

Database in Recovery Pending

La modalità “Ripristino in sospeso” indica che il database non può avviare il processo di ripristino in caso di arresto anomalo del sistema. Ciò è dovuto al fatto che SQL Server non è in grado di accedere alla pagina di avvio nel file di dati primario (MDF) per determinare se è necessario un ripristino in caso di arresto anomalo del sistema ma non è stato possibile avviare il processo di ripristino (ad esempio, perché il file di registro delle transazioni è mancante o danneggiato).


Altre cause possono essere lo spazio di archiviazione su disco o memoria insufficiente, o il danneggiamento file MDF a causa di molti motivi come problemi del sottosistema del disco, problemi della piattaforma, guasto hardware, attacco di virus e così via.


Nel caso in cui il ripristino del database non può essere avviato a causa di spazio di archiviazione su disco insufficiente bisogna innanzitutto, aumenta lo spazio su disco, dopodiché impostare il database in modalità “Online” ed eseguire il comando CheckDB.

ALTER DATABASE [DBNAME] SET ONLINE;
DBCC CHECKDB(‘DBNAME’) WITH NO_INFOMSGS;

Questa immagine ha l'attributo alt vuoto; il nome del file è CHECKDB.jpg

Nel caso in cui il log degli errori mostri che il database non è stato ripristinato correttamente a causa di un file di registro mancante del database che potrebbe essere eliminato, rinominato o danneggiato, metti il database in modalità di emergenza, poi scollega il database (metti in modalità OFFLINE) dopodiché allegalo di nuovo (portalo online).


I comandi da eseguire sono i seguenti:

ALTER DATABASE [DBNAME] SET EMERGENCY;
ALTER DATABASE [DBNAME] set multi_user;
EXEC sp_detach_db ‘DBNAME’;
EXEC sp_attach_single_file_db @DBName = ‘DBNAME’, @physname = N’MDF_FILE_FULL_PATCH’;

Questa immagine ha l'attributo alt vuoto; il nome del file è EMERGENCY.jpg

In alcuni casi è possibile risolvere errori di database utilizzando le opzioni Repair, ma solo come ultima risorsa.
Microsoft consiglia sempre un ripristino utente dall’ultimo backup valido noto come metodo principale per il ripristino da errori segnalati da DBCC CHECKDB.

Problemi del database

Un database di Microsoft SQL Server si trova sempre in uno stato specifico dal sistema.

L’identificazione dello stato del database e del modo in cui un database può essere spostato tra questi diversi stati consente di risolvere i problemi del database.

Questi stati includono ONLINE, OFFLINE, RESTORING, RECOVERING, SUSPECT, EMERGENCY e RECOVERY PENDING.

È possibile controllare rapidamente lo stato corrente di un database SQL che esegue la query riportata di seguito. Lo stato corrente di un database può essere verificato tramite state_desc.

Andiamo nel Management Studio di Sql Server dove, dopo avere selezionato “Nuova Query”, andremo a digitare i seguenti comandi:

SELECT name, state_desc from sys.databases

Come risultato della query otterremo l’elenco dei database collegati ed il loro stato

Installare Sql Server in ambiente Linux

In questo articolo vedremo come installare SQL Server 2022 sulla macchina Ubuntu

Per prima cosa importiamo la chiave di sicurezza GPG del repository pubblico digitando il seguente comando :

$ wget -qO- https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add –

Ora registriamo SQL Server 2022 nel repository Ubuntu e scriviamo :

sudo add-apt-repository “$(wget -qO- https://packages.microsoft.com/config/ubuntu/20.04/mssql-server-preview.list)”

ora aggiornarniamo i repository di Ubuntu.

sudo apt-get update

A questo punto scarichiamo e installiamo SQL Server 2022. Questo passaggio potrebbe richiedere del tempo poiché installerà pacchetti di dipendenze come gawk, libatomicl , libc++1. Scaricherà anche l’installazione di SQL Server 2022 dal registro Microsoft e avvierà il processo di installazione.

sudo apt-get install -y mssql-server

L’installazione di SQL una volta completata richiede di eseguire l’utilità mssql-conf per la configurazione. Questa utility mssql-conf richiede input utente specifici.

sudo /opt/mssql/bin/mssql-conf setup

Edizione SQL Server : inserire il numero di serie dell’edizione SQL Server 2022 che si desidera utilizzare. Per questa demo, sceglierò la prima opzione, Valutazione

  1. Evaluation
  2. Developer
  3. Express
  4. Web
  5. Standard
  6. Enterprise
  7. Enterprise Core
  8. BYOB (richiede la tua licenza)

Accetta i termini della licenza di SQL Server e scegli la lingua di SQL Server. Inserisco il valore 5 per l’installazione in italiano.

Una volta installato SQL Server 2022, viene visualizzato il messaggio: l’installazione è stata completata correttamente. SQL Server è ora in fase di avvio ed è consigliabile controllare lo stato del servizio.

systemctl status mssql-server –no-pager

Per la connessione a SQL Server 2022 Linux, sono necessari strumenti da riga di comando come SQLCMD o Azure Data Studio, SQL Server Management Studio. Se desideri connetterti in remoto da un computer Windows, puoi installare SSMS dal collegamento.

SSMS è un’applicazione basata su Windows. Pertanto, è possibile scegliere Azure Data Studio per l’installazione nel computer Linux stesso. È possibile fare riferimento alla guida per la configurazione di Azure Data Studio in Linux.