Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Fix „Profilname ist ungültig“ beim Senden von E-Mails von SQL Server

Wenn Sie versuchen, E-Mails von SQL Server zu senden, aber die Meldung „Profilname ist ungültig“ erhalten, liegt dies wahrscheinlich daran, dass Sie kein gültiges Profil für @profile_name angegeben haben Argument.

Beispiel

Angenommen, Sie verwenden den folgenden T-SQL-Code, um eine Benachrichtigungs-E-Mail an den Administrator zu senden, wenn ein SQL Server-Agent-Auftrag fehlschlägt:

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';

Aber Sie erhalten die folgende Fehlermeldung:

Msg 14607, Level 16, State 1, Procedure msdb.dbo.sysmail_verify_profile_sp, Line 42
profile name is not valid

Dieser Fehler teilt uns ausdrücklich mit, dass der „Profilname ungültig“ ist.

Um E-Mails mit Database Mail zu senden, müssen Sie direkt ein Profil anstelle eines Benutzerkontos angeben. In diesem Fall habe ich einen @profile_name angegeben des DB Admin Profile , aber ein solches Profil existiert eigentlich nicht.

Bevor ich E-Mails senden kann, muss ich einen Benutzer zur msdb hinzufügen Datenbank, erstellen Sie ein Datenbank-E-Mail-Konto, erstellen Sie dann ein Profil und fügen Sie das Datenbank-E-Mail-Konto zu diesem Profil hinzu. Ich muss dann den Benutzer zum Profil hinzufügen.

Alles in allem sieht es ungefähr so ​​aus:

-- 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;

Natürlich müssen Sie die verschiedenen Details durch Ihre eigenen ersetzen. Dies setzt auch voraus, dass Sie einen funktionierenden Mailserver angeben.

Sobald Sie fertig sind, sollten Sie bereit sein, E-Mails zu senden.