sql >> Database >  >> RDS >> Sqlserver

Fix "profielnaam is niet geldig" bij het verzenden van e-mail vanaf SQL Server

Als u e-mail probeert te verzenden vanaf SQL Server, maar u krijgt een "profielnaam is niet geldig", komt dat waarschijnlijk omdat u geen geldig profiel hebt opgegeven voor de @profile_name argument.

Voorbeeld

Stel dat u bijvoorbeeld de volgende T-SQL-code gebruikt om een ​​e-mailmelding naar de beheerder te sturen wanneer een SQL Server Agent-taak mislukt:

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

Maar je krijgt de volgende foutmelding:

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

Deze fout vertelt ons specifiek dat de "profielnaam niet geldig is".

Om e-mail te verzenden met Database Mail moet u direct een profiel opgeven in plaats van een gebruikersaccount. In dit geval heb ik een @profile_name . opgegeven van DB Admin Profile , maar zo'n profiel bestaat niet echt.

Voordat ik e-mail kan verzenden, moet ik een gebruiker toevoegen aan de msdb database, maak een databasemailaccount aan, maak vervolgens een profiel aan en voeg de databasemailaccount toe aan dat profiel. Ik moet dan de gebruiker aan het profiel toevoegen.

Alles bij elkaar ziet het er ongeveer zo uit:

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

Het is duidelijk dat u de verschillende details door die van uzelf moet vervangen. Dit veronderstelt ook dat je een mailserver specificeert die werkt.

Als je klaar bent, zou je klaar moeten zijn om e-mail te verzenden.


  1. De beste manieren om corrupte InnoDB-tabel in MySQL te repareren

  2. Lucene.Net configureren met SQL Server

  3. Hoe wachtwoord versleutelen in Oracle?

  4. Hoe het langzame query-logboek in MySQL in te schakelen?