
La gestione delle notifiche email è uno di quegli aspetti dell’amministrazione SQL Server che spesso viene trascurata finché non si ha bisogno davvero di sapere in tempo reale che un job è fallito, che un backup non è andato a buon fine o che un alert di monitoraggio si è attivato nel cuore della notte.
In ambienti enterprise, dove l’affidabilità dei processi schedulati è critica, avere un sistema di notifiche email configurato correttamente fa la differenza tra scoprire un problema all’alba di lunedì mattina e ricevere un avviso alle 2:00 di notte, quando si può ancora intervenire in tempo.
In questo articolo vedremo come configurare Database Mail su SQL Server Enterprise e come collegarlo all’SQL Server Agent per abilitare le notifiche automatiche tramite SMTP.
Partiremo dalla configurazione del profilo mail, analizzeremo le opzioni di sicurezza e autenticazione supportate incluso l’uso di account moderni come Microsoft 365 con autenticazione SMTP AUTH fino ad arrivare alla creazione degli operatori e all’associazione delle notifiche ai job agent.
Una configurazione completa, testata in produzione su SQL Server 2022 e 2025.
PREREQUISITI
Accesso a SSMS con privilegi sysadmin
Credenziali del server SMTP (host, porta, utente, password)
Service Broker abilitato su msdb (verificato automaticamente dalla procedura guidata)
STEP 1 — ABILITARE DATABASE MAIL XPS
Database Mail è disabilitato per default. Prima di tutto va abilitato tramite sp_configure con i seguenti comandi:
|
0
1
2
3
4
5
6
7
|
sqlUSE master;
GO
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
GO
EXEC sp_configure 'Database Mail XPs', 1;
RECONFIGURE;
GO
|
Se è andato tutto a buon fine dovremmo visualizzare una schermata come quella sovrastante
STEP 2 — AVVIARE LA PROCEDURA GUIDATA DA SSMS
A questo punto avviare la procedura tramite SSMS
In Object Explorer espandere il nodo Management e fare clic con il tasto destro su Database Mail e selezionare Configure Database Mail
Si aprirà il wizard. Cliccare Next
Alla prima schermata selezionare Set up Database Mail by performing the following tasks e cliccare Next
STEP 3 — CREARE UN PROFILO
Nella schermata New Profile inserire un nome per il profilo (es. SQLMailProfile) e una descrizione.
NOTA BENE: Il profilo è il contenitore che raccoglie uno o più account SMTP.
Cliccare Add… per aggiungere un account SMTP.
STEP 4 — CONFIGURARE L’ACCOUNT SMTP
Nella finestra New Database Mail Account compila i campi:
Account name: Nome univoco dell’account SMTP
Description: semplice descrizione
Email Address: Mittente delle email
Display Name: Nome visualizzato
Reply e-mail (opzionale): indirizzo reply-to
Server name: FQDN o IP del server SMTP
Port number: Porta SMTP — tipicamente 25 o 587, oppure 465 per SSL Microsoft
This Server requires a secure connection (SSl): Abilita se richiesto dal server
Nella Sezione autenticazione ci sono tre opzioni:
- Windows Authentication (NTLM, solo per Exchange on-premises)
- Basic Authentication (username e password espliciti)
- Anonymous (nessuna credenziale, solo se il server SMTP lo consente)
Per Office 365 / SMTP esterno scegli Basic Authentication e inserisci username e password.
Cliccare OK per confermare la configurazione
Cliccare Next
STEP 5 — GESTIRE LA SICUREZZA DEL PROFILO
Nella schermata Manage Profile Security spuntare la casella Public e impostare il profilo come Default Profile = Yes
Questo permette a qualsiasi utente con accesso a msdb di inviare email senza specificare un profilo esplicitamente.
STEP 6 — PARAMETRI DI SISTEMA (OPZIONALI)
Lasciare i valori di default. Il Logging Level è impostato su Extended di default, che registra errori, warning e messaggi informativi.
Cliccare Next
Cliccare Finish
Cliccare Close per chiudere il wizard
STEP 7 — INVIO DI UNA MAIL DI TEST
Da SSMS cliccare di destro su Database Mail → Send Test E-Mail…
Selezionare il profilo, inserire un destinatario e cliccare Send Test E-Mail
Se riceviamo la mail cliccare OK per confermare che tutto funzioni
In alternaitva è possibile fare il test dell’email tramite script T-SQL:
|
0
1
2
3
4
|
sqlEXEC msdb.dbo.sp_send_dbmail
@profile_name = 'SQLMailProfile',
@subject = 'Test Database Mail',
@body = 'Configurazione SMTP completata con successo!';
|
CONFIGURAZIONE DEL SERVER SMTP TRAMITE SCRIPT T-SQL
In alternativa al wizard è possibile configurare tutto via T-SQL se si preferisce configurare tutto via script (utile per automazione o documentazione):
|
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
sql-- 1. Abilita Database Mail
EXEC sp_configure 'show advanced options', 1; RECONFIGURE;
EXEC sp_configure 'Database Mail XPs', 1; RECONFIGURE;
-- 2. Crea il profilo
EXEC msdb.dbo.sysmail_add_profile_sp
@profile_name = 'SQLMailProfile',
@description = 'Profilo SMTP per SQL Server';
-- 3. Crea l'account SMTP
EXEC msdb.dbo.sysmail_add_account_sp
@account_name = 'SMTPAccount',
@display_name = 'SQL Server Alerts',
@mailserver_name = 'smtp.office365.com',
@port = 587,
@enable_ssl = 1,
@password = 'TUA_PASSWORD';
-- 4. Associa account al profilo
EXEC msdb.dbo.sysmail_add_profileaccount_sp
@profile_name = 'SQLMailProfile',
@account_name = 'SMTPAccount',
@sequence_number = 1;
-- 5. Rendi il profilo pubblico e default
EXEC msdb.dbo.sysmail_add_principalprofile_sp
@profile_name = 'SQLMailProfile',
@principal_name = 'public',
@is_default = 1;
Verifica e troubleshooting
sql-- Controlla la coda dei messaggi inviati
SELECT * FROM msdb.dbo.sysmail_sentitems ORDER BY sent_date DESC;
-- Controlla eventuali errori
SELECT * FROM msdb.dbo.sysmail_event_log ORDER BY log_date DESC;
-- Verifica configurazione profili e account
EXEC msdb.dbo.sysmail_help_profile_sp;
EXEC msdb.dbo.sysmail_help_account_sp;
|
A questo punto dovremmo essere in grado di inviare le mail con il nostro SQL Server…

0 commenti