SQL Server ma opcję poczty bazy danych, której można użyć do wysyłania poczty z serwera bazy danych.
Na przykład możesz otrzymywać powiadomienia, gdy zadania agenta SQL Server kończą się lub nie powiodą, lub gdy występuje błąd o wysokim stopniu ważności itp.
Gdy poczta bazy danych nie jest skonfigurowana
W SQL Server poczta jest wysyłana poprzez wykonanie sp_send_dbmail
procedura składowana w msdb
baza danych.
Oto przykład:
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';
Jednak zakłada się, że SQL Server jest skonfigurowany do wysyłania poczty.
Jeśli próbujesz wysłać pocztę z SQL Server, ale pojawia się błąd podobny do poniższego, oznacza to, że obecnie nie masz włączonej poczty bazy danych.
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.
Włącz system XP poczty bazy danych
Zanim zaczniesz wysyłać pocztę z serwera, upewnij się, że masz włączoną pocztę bazy danych XP.
Jest to dość łatwe do zrobienia (chociaż Microsoft zaleca, aby zaawansowane opcje, takie jak ta, były zmieniane tylko przez doświadczonego administratora bazy danych lub certyfikowanego technika SQL Server).
Oto jak włączyć pocztę bazy danych XP:
EXEC sp_configure 'show advanced options', '1';
RECONFIGURE
GO
EXEC sp_configure 'Database Mail XPs', 1;
RECONFIGURE
GO
Wynik:
Configuration option 'show advanced options' changed from 0 to 1. Run the RECONFIGURE statement to install. Commands completed successfully. Commands completed successfully.
Utwórz konto pocztowe, profil itp.
Poczta bazy danych jest wysyłana za pośrednictwem profilu, a nie bezpośrednio z konta użytkownika.
Aby wysłać wiadomość e-mail za pomocą poczty bazy danych, musisz utworzyć konto poczty bazy danych, profil poczty bazy danych, dodać konto do profilu, a następnie przyznać użytkownikowi dostęp do tego profilu. Użytkownik musi być w msdb
baza danych.
Kod T-SQL do tego może wyglądać mniej więcej tak:
-- 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;
Będziesz musiał zastąpić różne szczegóły własnymi. Zakłada się również, że określisz działający serwer pocztowy.
Gdy to zrobisz, powinieneś być w stanie wysyłać pocztę za pomocą msdb.dbo.sp_send_dbmail
procedura składowana.