SQL Server má možnost databázové pošty, kterou můžete použít k odesílání pošty z databázového serveru.
Můžete například dostávat oznámení, když úlohy SQL Server Agent skončí nebo selžou, nebo když dojde k velmi závažné chybě atd.
Když databázová pošta není nakonfigurována
V SQL Server se pošta odesílá spuštěním sp_send_dbmail
uložená procedura v msdb
databáze.
Zde je příklad:
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'DB Admin Profile',
@recipients = '[email protected]',
@body = 'Your favorite SQL Server Agent job just failed',
@subject = 'SQL Server Agent Job: FAILED';
To však předpokládá, že SQL Server je nakonfigurován pro odesílání pošty.
Pokud se pokusíte odeslat poštu ze serveru SQL, ale zobrazí se chyba podobná následující, znamená to, že aktuálně nemáte povolenou poštu databáze.
Msg 15281, Level 16, State 1, Procedure msdb.dbo.sp_send_dbmail, Line 0 SQL Server blocked access to procedure 'dbo.sp_send_dbmail' of component 'Database Mail XPs' because this component is turned off as part of the security configuration for this server. A system administrator can enable the use of 'Database Mail XPs' by using sp_configure. For more information about enabling 'Database Mail XPs', search for 'Database Mail XPs' in SQL Server Books Online.
Povolit databázová pošta XP
Než začnete odesílat poštu ze serveru, musíte se ujistit, že máte povoleno Database Mail XP.
Je to docela snadné (ačkoli společnost Microsoft doporučuje, aby pokročilé možnosti, jako je tato, změnil pouze zkušený správce databáze nebo certifikovaný technik SQL Server).
Zde je návod, jak povolit Database Mail XP:
EXEC sp_configure 'show advanced options', '1';
RECONFIGURE
GO
EXEC sp_configure 'Database Mail XPs', 1;
RECONFIGURE
GO
Výsledek:
Configuration option 'show advanced options' changed from 0 to 1. Run the RECONFIGURE statement to install. Commands completed successfully. Commands completed successfully.
Vytvořte si e-mailový účet, profil atd.
Databázová pošta je odesílána prostřednictvím profilu, nikoli přímo prostřednictvím uživatelského účtu.
Chcete-li odesílat e-maily pomocí Database Mail, musíte vytvořit účet Database Mail, profil Database Mail, přidat účet do profilu a poté udělit uživateli přístup k tomuto profilu. Uživatel musí být na msdb
databáze.
Kód T-SQL k tomu by mohl vypadat nějak takto:
-- Switch to the msdb database
USE msdb;
-- Create a user on the msdb database
CREATE USER Marge FOR LOGIN Marge;
-- Create a Database Mail account
EXECUTE msdb.dbo.sysmail_add_account_sp
@account_name = 'DB Admin',
@description = 'Mail account for admin emails.',
@email_address = '[email protected]',
@replyto_address = '[email protected]',
@display_name = 'DB Automated Mailer',
@mailserver_name = 'smtp.example.com',
@port = 25;
-- Create a Database Mail profile
EXECUTE msdb.dbo.sysmail_add_profile_sp
@profile_name = 'DB Admin Profile',
@description = 'Profile for admin emails.';
-- Add the account to the profile
EXECUTE msdb.dbo.sysmail_add_profileaccount_sp
@profile_name = 'DB Admin Profile',
@account_name = 'DB Admin',
@sequence_number = 1;
-- Grant the msdb user access to the Database Mail profile
EXECUTE msdb.dbo.sysmail_add_principalprofile_sp
@profile_name = 'DB Admin Profile',
@principal_name = 'Marge',
@is_default = 1;
Budete muset nahradit různé detaily svými vlastními. To také předpokládá, že zadáte poštovní server, který funguje.
Jakmile to uděláte, měli byste být schopni odesílat poštu pomocí msdb.dbo.sp_send_dbmail
uložená procedura.