# SQL Always On

- Link: https://www.silviobalduzzi.com/2020/07/sql-always-on/
- Published: 2020-07-07T10:08:14+02:00
- Author: balduz84

Spesso capita di avere a che fare con database SQL che avrebbe senso proteggere 
con un sistema di alta affidabilità. Microsoft rende disponibili diverse metodologie
per far ciò, tra cui la modalità Always On. Questa modalità è considerata la più
facile e conveniente e cercherò qui di mostrarvi come si configura.

Per iniziare abbiamo necessità di predisporre due server (ormai quasi sempre virtuali)
con un sistema operativo possibilmente moderno (ad oggi consiglio ovviamente o Windows
Server 2016 o 2019); fatto ciò dobbiamo installare sui due server una versione di
SQL Server Standard o Enterprise (la Standard ha chiaramente alcune funzionalità
in meno rispetto alla Enterprise, ma che non starò a elencare). Nel mio caso ho 
installato SQL Server 2019 Enterprise.

L’installazione dei nodi SQL può avvenire come se fossero nodi standalone, quindi
senza particolari accortezze (le configurazioni di default vanno bene).

Al termine dell’installazione è necessario eseguire i seguenti passaggi:

Aprire la console SQL Server Configuration Manager, cliccare tasto destro sull’istanza
e selezionare Priprietà:

![](https://i0.wp.com/www.silviobalduzzi.com/wp-content/uploads/2020/07/image.png?
resize=760%2C317&ssl=1)

All’interno della scheda “Gruppi di disponibilità Always On” attivare la spunta “
Abilita Gruppi di disponibilità Always On”:

![](https://i0.wp.com/www.silviobalduzzi.com/wp-content/uploads/2020/07/image-1.
png?resize=423%2C271&ssl=1)

Abilitare l’avvio automatico del servizio “SQL Server Agent” e avviarlo:

![](https://i0.wp.com/www.silviobalduzzi.com/wp-content/uploads/2020/07/image-2.
png?resize=557%2C101&ssl=1)

Accedere all’istanza tramite “SQL Management Studio”, selezionare i database presenti(
nel mio caso il primo server era già esistente e stava erogando 4 DB) e nelle Proprietà–
>Opzioni modificare il modello di recupero in “Con registrazione completa”:

![](https://i0.wp.com/www.silviobalduzzi.com/wp-content/uploads/2020/07/image-8.
png?resize=697%2C290&ssl=1)

Eseguire il backup dei DB presenti usando la funzione specifica presente nel menu
Attività–>Backup:

![](https://i0.wp.com/www.silviobalduzzi.com/wp-content/uploads/2020/07/image-6.
png?resize=380%2C411&ssl=1)

![](https://i0.wp.com/www.silviobalduzzi.com/wp-content/uploads/2020/07/image-4.
png?resize=580%2C318&ssl=1)

![](https://i0.wp.com/www.silviobalduzzi.com/wp-content/uploads/2020/07/image-7.
png?resize=760%2C343&ssl=1)

Tramite “SQL Management Studio” è necessario assegnare i permessi ad ogni istanza
agli altri server che comporranno il gruppo Always On; per esempio nel mio caso 
ho assegnato i permessi al SERVER01 per poter accedere al SERVER02 e viceversa:

_`use [master]
GOCREATE LOGIN [DOMINIO\SERVER02$] FROM WINDOWSGOGRANT CONNECT ON
ENDPOINT::[Hadr\_endpoint] TO [DOMINIO\SERVER02$]GO

A questo punto è possibile avviare il wizard per creare il gruppo Always On:

![](https://i0.wp.com/www.silviobalduzzi.com/wp-content/uploads/2020/07/image-9.
png?resize=760%2C403&ssl=1)

Selezionare i DB che si vuole mettere in Always On:

![](https://i0.wp.com/www.silviobalduzzi.com/wp-content/uploads/2020/07/image-10.
png?resize=760%2C350&ssl=1)

Connettersi alla seconda istanza predisposta per lavorare in Always On:

![](https://i0.wp.com/www.silviobalduzzi.com/wp-content/uploads/2020/07/image-11.
png?resize=760%2C375&ssl=1)

Definire la preferenza di sincronizzazione dei dati; nel mio caso i DB sono piccoli
ed ho lasciato quindi eseguire la sincronizzazione al sistema; in caso di DB grossi
è possibile selezionare la seconda voce “Backup completo di database e log” e ripristinare
a mano il DB sull’istanza secondaria (dai backup che abbiamo eseguito in precedenza);
ci penserà poi l’Always On ad allinearli con le eventuali modifiche effettuare nel
frattempo sui DB.

![](https://i0.wp.com/www.silviobalduzzi.com/wp-content/uploads/2020/07/image-12.
png?resize=760%2C690&ssl=1)

Al termine della sincronizzazione si dovrebbero ottenere 4 esiti positivi, come 
da figura:

![](https://i0.wp.com/www.silviobalduzzi.com/wp-content/uploads/2020/07/image-13.
png?resize=760%2C368&ssl=1)

Cliccare con il tasto destro del mouse sulla cartella “Gruppi di disponibilità” 
e cliccare su “Mostra dashboard”:

![](https://i0.wp.com/www.silviobalduzzi.com/wp-content/uploads/2020/07/image-14.
png?resize=444%2C200&ssl=1)

Se tutto risulta validato correttamente, il sistema è correttamente funzionante 
e le repliche sono attive:

![](https://i0.wp.com/www.silviobalduzzi.com/wp-content/uploads/2020/07/image-15.
png?resize=760%2C478&ssl=1)

A questo punto manca semplicemente la creazione del listener Always On per avere
il sistema pronto per essere utilizzato. Avviare il wizard “Aggiungi listener”:

![](https://i0.wp.com/www.silviobalduzzi.com/wp-content/uploads/2020/07/image-16.
png?resize=393%2C112&ssl=1)

Definire la porta e l’IP del listener che lavorerà come VIP di frontend per la coppia
di server inseriti nel Always On.

Gli applicativi potranno per cui essere configurati per puntare a questo VIP ed 
alla porta definita, attingendo quindi all’istanza di database in quel momento attiva.
In caso di fail dell’istanza attiva, la secondaria prenderà in carico il VIP e procederà
a servire immediatamente le attività sui DB protetti.
