Jeśli próbujesz wysłać pocztę z SQL Server, ale otrzymujesz „nazwa profilu jest nieprawidłowa”, to prawdopodobnie dlatego, że nie określiłeś prawidłowego profilu dla @profile_name
argument.
Przykład
Załóżmy na przykład, że używasz następującego kodu T-SQL do wysyłania wiadomości e-mail z powiadomieniem do administratora, gdy zadanie SQL Server Agent nie powiedzie się:
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';
Ale pojawia się następujący błąd:
Msg 14607, Level 16, State 1, Procedure msdb.dbo.sysmail_verify_profile_sp, Line 42 profile name is not valid
Ten błąd wyraźnie mówi nam, że „nazwa profilu jest nieprawidłowa”.
Aby wysłać wiadomość e-mail za pomocą poczty bazy danych, musisz określić profil zamiast bezpośrednio konto użytkownika. W tym przypadku określiłem @profile_name
DB Admin Profile
, ale taki profil w rzeczywistości nie istnieje.
Zanim będę mógł wysyłać pocztę, muszę dodać użytkownika do msdb
bazy danych, utwórz konto pocztowe bazy danych, a następnie utwórz profil i dodaj konto pocztowe bazy danych do tego profilu. Następnie muszę dodać użytkownika do profilu.
W sumie będzie to 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 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;
Oczywiście będziesz musiał zastąpić różne szczegóły własnymi. Zakłada się również, że określisz działający serwer pocztowy.
Po zakończeniu powinieneś być gotowy do wysłania poczty.