Condividi tramite


Posta del Database

Si applica a:SQL ServerIstanza gestita di SQL di Azure

Posta elettronica database è una soluzione aziendale per l'invio di messaggi di posta elettronica dal motore di database di SQL Server o dall'istanza gestita di database SQL di Azure. Le applicazioni possono inviare messaggi di posta elettronica agli utenti usando Posta elettronica database tramite un server SMTP esterno. I messaggi possono includere risultati di query e file provenienti da qualunque risorsa disponibile in rete.

Nota

Posta elettronica database è disponibile nel motore di database di SQL Server e in Istanza gestita di SQL di Azure, ma non nel database SQL di Azure e nei pool elastici. Per altre informazioni sull'uso di Posta elettronica database in Istanza gestita di SQL di Azure, vedere Automatizzare le attività di gestione usando i processi di SQL Agent in Istanza gestita di SQL di Azure.

Vantaggi dell'utilizzo della Posta elettronica database

Posta elettronica database è caratterizzata da affidabilità, scalabilità, sicurezza e facilità di supporto.

Affidabilità

  • Posta elettronica database utilizza il protocollo SMTP (Simple Mail Transfer Protocol) standard per l'invio della posta. È possibile utilizzare Posta elettronica database senza installare un client MAPI estesa nel computer che esegue SQL Server.

  • Isolamento dei processi. Per ridurre al minimo l'impatto su SQL Server, il componente che fornisce la posta elettronica viene eseguito esternamente a SQL Server, in un processo separato. SQL Server continuerà a mettere in coda i messaggi di posta elettronica anche se il processo esterno si arresta o non va a buon fine. I messaggi in coda verranno inviati non appena il processo esterno o il server SMTP sarà online.

  • Account di failover Un profilo di Posta elettronica database consente di specificare più di un server SMTP. Nel caso in cui un server SMTP non sia disponibile, sarà comunque possibile recapitare la posta a un altro server SMTP.

  • Supporto dei cluster. Database Mail è compatibile con i cluster ed è pienamente supportato in un cluster.

Scalabilità

  • Recapito in background: La Posta elettronica di Database consente il recapito in background o in modalità asincrona. Quando si utilizza sp_send_dbmail per inviare un messaggio, Database Mail aggiunge una richiesta a una coda di Service Broker. La stored procedure restituisce immediatamente un risultato. Il componente esterno di posta elettronica riceve la richiesta e recapita i messaggi.

  • Più profili: Posta elettronica database consente di creare più profili in un'istanza di SQL Server. Facoltativamente, è possibile scegliere il profilo utilizzato da Posta elettronica database quando viene inviato un messaggio.

  • Più account: ogni profilo può contenere diversi account di failover. È possibile configurare profili diversi con account diversi, per distribuire la posta elettronica su più server di posta.

  • Compatibilità a 64 bit: Database Mail è pienamente supportata nelle installazioni a 64 bit di SQL Server.

Sicurezza

  • Disabilitazione per impostazione predefinita: per ridurre la superficie di attacco di SQL Server, le stored procedure di Database Mail sono disabilitate.

    • Per configurare Posta elettronica database, è necessario essere un membro del ruolo predefinito del server amministratore di sistema.
  • Sicurezza posta: per inviare Posta elettronica database, è necessario essere membri del ruolo del database DatabaseMailUserRole nel msdb database.

  • Sicurezza del profilo: Mail del database impone la sicurezza sui profili di posta. È possibile scegliere gli utenti o i gruppi del database msdb autorizzati ad accedere a un profilo di Posta elettronica database. È possibile concedere l'accesso a utenti specifici o a tutti gli utenti in msdb. Un profilo privato consente di limitare l'accesso a un elenco specificato di utenti. Un profilo pubblico risulta disponibile per tutti gli utenti di un database.

  • Dimensione massima dell'allegato: Database Mail impone un limite configurabile sulla dimensione dei file allegati. È possibile modificare tale limite usando la stored procedure sysmail_configure_sp.

  • Estensioni di file non consentite: Database Mail mantiene un elenco di estensioni di file non consentite. Gli utenti non possono allegare file con un'estensione visualizzata nell'elenco. È possibile modificare questo elenco utilizzando sysmail_configure_sp.

  • Database Mail viene eseguito su l'account di servizio del motore di SQL Server. Per allegare un file da una cartella a un'e-mail, l'account del motore di SQL Server deve disporre delle autorizzazioni necessarie per accedere alla cartella in cui è contenuto il file.

Supportabilità

  • Configurazione integrata: Posta elettronica di Database mantiene le informazioni sugli account email nel motore di database SQL Server. Non è necessario gestire un profilo di posta elettronica in un'applicazione client esterna. Nella Configurazione guidata di Database Mail è disponibile un'interfaccia di facile utilizzo per configurare Database Mail. È inoltre possibile creare e mantenere configurazioni di Posta elettronica database tramite Transact-SQL.

  • Registrazione (Wiki Microsoft/ApplicationInsights-aspnetcore: registrazione). Database Mail registra l'attività di posta elettronica in SQL Server, nel registro eventi delle applicazioni di Windows e nelle tabelle del database msdb.

  • Verifica: Database Mail mantiene copie dei messaggi e degli allegati inviati nel database msdb. È possibile controllare con facilità l'utilizzo di Posta elettronica database ed esaminare i messaggi conservati.

  • Supporto per HTML: Posta elettronica database consente di inviare messaggi di posta elettronica in formato HTML.

Architettura di Posta elettronica database

Database Mail è basato su un'architettura a code che impiega tecnologie di service broker. Quando gli utenti eseguono sp_send_dbmail, la stored procedure inserisce un elemento nella coda della posta elettronica e crea un record contenente il messaggio di posta elettronica. L'inserimento della nuova voce nella coda della posta elettronica avvia il processo esterno di Database Mail (DatabaseMail.exe). Il processo esterno legge le informazioni relative alla posta elettronica e invia il messaggio al server o ai server di posta elettronica appropriati. Il processo esterno inserisce un elemento nella coda di stato per il risultato dell'operazione di invio. L'inserimento della nuova voce nella coda di stato avvia una "stored procedure" interna che aggiorna lo stato del messaggio di posta elettronica. Oltre a conservare i messaggi di posta elettronica inviati o non inviati, Database Mail registra anche eventuali allegati nelle tabelle di sistema. Le visualizzazioni di Database Mail forniscono lo stato dei messaggi per la risoluzione dei problemi, e le stored procedure consentono l'amministrazione della coda di Database Mail.

Diagramma del modo in cui il database di sistema msdb invia messaggi a un server di posta SMTP.

Introduzione ai componenti di Posta elettronica database

Il programma Posta elettronica database è costituito dai componenti principali seguenti:

  • Componenti di configurazione e di sicurezza

    Database Mail archivia le informazioni di configurazione e di sicurezza nel database msdb. Gli oggetti di configurazione e di sicurezza creano profili e account utilizzati da Posta elettronica database.

  • Componenti di messaggistica

    Il database msdb funge da database host della mail contenente gli oggetti di messaggistica che Database Mail utilizza per inviare i messaggi. Questi oggetti includono la stored procedure sp_send_dbmail e le strutture dei dati contenenti le informazioni relative ai messaggi.

  • Eseguibile di Database Mail

    L'eseguibile di Database Mail è un programma esterno, che legge da una coda nel database msdb e invia i messaggi ai server di posta elettronica.

  • Componenti di registrazione e controllo

    Mail del database registra le informazioni di log nel database msdb e nel registro eventi delle applicazioni di Windows.

Configurare SQL Agent per l'uso di Mail del Database

SQL Server Agent può essere configurato per l'utilizzo di Posta elettronica database. Ciò è necessario per le notifiche degli avvisi e per la notifica automatica del completamento di un processo.

Avviso

I singoli passaggi all'interno di un processo possono inoltre inviare posta elettronica senza configurare SQL Server Agent per l'utilizzo di Posta elettronica database. Ad esempio, un passaggio del processo Transact-SQL può utilizzare Posta elettronica database per inviare i risultati di una query a un elenco di destinatari.

È possibile configurare SQL Server Agent per inviare messaggi di posta elettronica a operatori predefiniti nelle condizioni riportate di seguito:

  • È stato attivato un avviso. È possibile configurare gli avvisi in modo da inviare notifiche tramite posta elettronica quando vengono generati eventi specifici, Ad esempio, gli avvisi possono essere configurati per notificare a un operatore di un determinato evento di database o condizione del sistema operativo che potrebbe richiedere un'azione immediata. Per altre informazioni sulla configurazione degli avvisi, vedere Avvisi.

  • Quando un'attività pianificata, ad esempio il backup di un database o un evento di replica, viene completata o non riesce. È possibile ad esempio utilizzare SQL Server Agent Mail per notificare agli operatori il verificarsi di un errore durante l'elaborazione alla fine del mese.

Per iniziare a configurare SQL Agent per l'uso di Posta elettronica database, vedere Configurare la posta elettronica di SQL Server Agent per l'uso di Posta elettronica database.

Posta elettronica del database con gruppi di disponibilità contenuti

Per usare Posta elettronica del database con gruppi di disponibilità contenuti, è necessario connettersi all'istanza e abilitare gli XPs di Posta elettronica del database (opzione di configurazione del server) usando la stored procedure di sistema sp_configure. Questo passaggio deve essere completato in tutte le repliche nel gruppo di disponibilità contenuto.

  • Se si tenta di abilitare l'opzione per la posta elettronica del database quando si è connessi al listener del gruppo di disponibilità contenuta, verrà visualizzato l'errore previsto: Changes to server configuration options are not permitted in the connection to Contained Availability Group. Change connection to SQL Server instance level and retry the operation. (Microsoft SQL Server, Error: 5874)

Dopo aver abilitato l'opzione Database Mail XPs in tutte le repliche, connettersi al listener del gruppo di disponibilità indipendente per continuare con la configurazione della posta elettronica del database, come descritto in Selezionare l'attività di configurazione. In questo modo, gli oggetti di posta elettronica del database saranno presenti all'interno del gruppo di disponibilità indipendente e rimarranno sincronizzati.

Supporto TDS 8.0

SQL Server 2025 (17.x) ha introdotto il supporto TDS 8.0 per Posta elettronica database. Il protocollo TDS 8.0 fornisce sicurezza e crittografia avanzata per i dati trasmessi tra SQL Server e le applicazioni client. In questo modo, Posta elettronica database può funzionare in ambienti in cui vengono applicati la crittografia TLS 1.3 e TDS 8.0.

Troubleshoot

Per la risoluzione dei problemi di Database Mail, visita:

Passo successivo