sql >> Databasteknik >  >> RDS >> Sqlserver

Fixa "profilnamnet är inte giltigt" när du skickar e-post från SQL Server

Om du försöker skicka e-post från SQL Server, men du får ett "profilnamn är inte giltigt" beror det förmodligen på att du inte har angett en giltig profil för @profile_name argument.

Exempel

Låt oss till exempel säga att du använder följande T-SQL-kod för att skicka ett e-postmeddelande till administratören när ett SQL Server Agent-jobb misslyckas:

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

Men du får följande felmeddelande:

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

Det här felet berättar specifikt att "profilnamnet inte är giltigt".

För att skicka e-post med Database Mail måste du ange en profil istället för ett användarkonto direkt. I det här fallet angav jag en @profile_name av DB Admin Profile , men en sådan profil finns faktiskt inte.

Innan jag kan skicka e-post, vad jag behöver göra är att lägga till en användare i msdb databas, skapa ett databaspostkonto, skapa sedan en profil och lägg till databaspostkontot till den profilen. Jag måste sedan lägga till användaren i profilen.

Allt kommer att se ut ungefär så här:

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

Självklart måste du ersätta de olika detaljerna med dina egna. Detta förutsätter också att du anger en e-postserver som fungerar.

När du är klar bör du vara redo att skicka e-post.


  1. Din ultimata guide till SQL Joins:OUTER JOIN – Del 2

  2. När ska man stänga markörer med MySQLdb

  3. Prestanda överraskningar och antaganden:GROUP BY vs. DISTINCT

  4. Benchmarking Managed PostgreSQL Cloud Solutions:Del två - Amazon RDS