Installare e configurare Microsoft SQL Server for Linux

Ormai non è più una novità, torniamo a parlare di Microsoft nel mondo Linux come se fosse una cosa “normale”; in questo articolo vediamo come è possibile installare SQL Server, si proprio lui, Microsoft SQL Server, su una macchina Linux, in maniera davvero semplice e veloce.

Non stiamo ovviamente parlando di Open Source, il servizio database viene fornito già compilato e pacchettizzato per le varie distribuzioni. Nella versione Linux, attualmente denominata SQL Server vNext CTP1 è basato sul nuovo motore SQL Server 2016, ed è scaricabile direttamente dal sito Microsoft al seguente link:

https://www.microsoft.com/en-us/sql-server/sql-server-vnext-including-Linux#resources

Senza dilungarci troppo su cos’è e come funziona SQL Server, passiamo all’installazione su una macchina di test; per questa occasione utilizziamo una macchina CentOS 7, quindi utilizzeremo yum come gestore di pacchetti. Navigando sul link indicato in precedenza sceglieremo quindi l’installazione dedicata all’ambiente Red Hat e ci ritroveremo davanti a questo rapidissimo step by step:

https://docs.microsoft.com/it-it/sql/linux/sql-server-linux-setup-red-hat

Ricordiamo che per avviare il servizio è necessario che la macchina abbia almeno 3,25 GB di RAM.

Il primo passo consiste nell’aggiungere ai repository in cui yum effettua le ricerche dei pacchetti, quello in cui è presente il servizio SQL Server per distribuzioni Red Hat, che corrisponde all’indirizzo https://packages.microsoft.com/config/rhel/7/mssql-server.repo

Scarichiamo quindi con curl il file testuale corrispondente all’URL appena indicato e lo salviamo tra i repository di yum.

curl https://packages.microsoft.com/config/rhel/7/mssql-server.repo > /etc/yum.repos.d/mssql-server.repo

Per questo esempio siamo loggati sulla macchina con un utente dedicato all’installazione e avvio del servizio SQL chiamato sqluser. Per eseguire comandi con privilegi amministrativi utilizziamo sudo.

Lanciamo quindi l’installazione con l’utente sqluser eseguendo

sudo yum install -y mssql-server

Il gestore di pacchetti yum scaricherà i files necessari (circa 140Mb) più eventuali prerequisiti ed installerà tutto il necessario. L’installazione sulla mia macchina di test è durata circa 5 secondi, circa lo stesso tempo che impiega a comparire lo splash screen dell’ìnstallazione quando avviata su Windows.

Come visibile anche dallo screenshot, al termine dell’installazione viene richiesto di lanciare uno script per lanciare la configurazione del servizio. Durante la configurazione verrà settata la password dell’utente SA e verrà chiesto se avviare il servizio SQL al termine dell’installazione. E’ possibile anche abilitare l’esecuzione del servizio automaticamente all’avvio. Anche questa configurazione viene completata in circa 10-15 secondi.

Per avviare lo script è necessario eseguire:

sudo /opt/mssql/bin/sqlservr-setup

Verifichiamo subito che il servizio è effettivamente up and running con il commando

service mssql-server status

Se sulla nostra distribuzione Red Hat (oppure CentOS) è attivo un firewall, possiamo configurarlo per accettare connessioni sql in ingresso con:

sudo firewall-cmd --zone=public --add-port=1433/tcp –permanent
sudo firewall-cmd –reload

Se vogliamo utilizzare questa stessa macchina linux per effettuare il management del motore database dobbiamo installare i relativi tools. L’operazione è molto semplice e del tutto simile alla precedente. Sarà necessario aggiungere un nuovo repository ed avviare l’installazione dei tools con il comando yum.

sudo su -
curl https://packages.microsoft.com/config/rhel/7/prod.repo > /etc/yum.repos.d/msprod.repo
exit
sudo yum install mssql-tools

Tutto è pronto quindi per effettuare la connessione al database utilizzando i tools forniti da Linux. Il comando che utilizzeremo è sqlcmd e sintassi e modalità d’uso sono identiche alla versione per Windows.

Effettuiamo un primo test di connessione con:

sqlcmd -S <host> -U <utente> -P <Password>

Omettendo la password verrà richiesta dopo aver premuto invio. Quindi nel nostro caso:

sqlcmd -S localhost -U SA


A questo punto siamo pronti per interagire con il motore database utilizzando query Transact-SQL

Creiamo ad esempio un database di nome “ictpower”, all’interno di questo database creiamo una tabella chiamandola “anagrafica”.

CREATE DATABASE ictpower;
GO

CREATE TABLE anagrafica (id INT, nome NVARCHAR(50), cognome NVARCHAR(50));
GO


Inseriamo ora due record all’interno della tabella anagrafica:

INSERT INTO anagrafica VALUES (1, 'Gianluca', 'Nanoia');
INSERT INTO anagrafica VALUES (2, 'Nicola', 'Ferrini');
GO

Possiamo testare anche i comandi di selezione per effettuare delle query sulla tabella appena create:

Possiamo ovviamente connetterci al servizio database utilizzando il classico SQL Management Studio di Windows. E siccome sono sicuro che siete molto scettici, facciamo subito una prova per cancellare ogni dubbio.

Attualmente l’unica versione di SQL Server Management Studio che permette la connessione e a SQL Server vNext CTP 1 è la 17.0 RC1. E’ necessario scaricare il pacchetto relativo alla lingua del sistema operativo in uso. Nello specifico al seguente link è scaricabile SSMS 17 in inglese:

https://go.microsoft.com/fwlink/?LinkID=835608&clcid=0x409

Quello in italiano è disponibile invece al seguente indirizzo:

https://go.microsoft.com/fwlink/?LinkID=835608&clcid=0x410

Effettuiamo quindi il download e procediamo con l’installazione, che non richiede particolari attenzioni.

Avviamo subito il client e proviamo a connetterci al motore di database inserendo IP della macchina Linux, nome utente e password settata in precedenza

La connessione va a buon fine e proviamo subito a guardare le proprietà del server cliccando con il tasto destro sul nome (o l’IP) del server nell’object explorer e selezionando proprietà.

Beh, in effetti è un po’ strano da vedere ma è esattamente quello che ci aspettavamo: Microsoft SQL Server versione 14 su CentOS Linux.

Per testare le funzionalità di base verifichiamo innanzi tutto l’esistenza di database, tabelle e record creati in precedenza, e successivamente proviamo a creare un’altra tabella ed inserire qualche dato di esempio.

Tutto sembra perfetto, ed anche creazione tabella ed inserimento dati non comportano problemi

E’ possibile programmare anche delle stored procedures, quindi il motore di database è assolutamente utilizzabile per ambienti anche di una certa complessità.

Mi sento di dire che è sicuramente un ottimo inizio, anche se la versione di Microsoft SQL Server per Linux ha ancora molte limitazioni rispetto al SQL Server che siamo abituati ad utilizzare su Windows. Risparmio il mero copia-incolla dalla pagina ufficiale indicando il link alla relativa pagina di Microsoft, nella quale sono indicate in dettaglio tutte le differenze tra le due versioni.

https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-release-notes