Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Correzione del "nome del profilo non valido" durante l'invio di posta da SQL Server

Se provi a inviare posta da SQL Server, ma ottieni un "nome profilo non valido" probabilmente è perché non hai specificato un profilo valido per @profile_name argomento.

Esempio

Ad esempio, supponiamo che tu stia utilizzando il seguente codice T-SQL per inviare un'e-mail di notifica all'amministratore ogni volta che un processo di SQL Server Agent non riesce:

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

Ma ottieni il seguente errore:

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

Questo errore ci dice in particolare che il "nome del profilo non è valido".

Per inviare e-mail con Posta database è necessario specificare direttamente un profilo anziché un account utente. In questo caso, ho specificato un @profile_name di DB Admin Profile , ma un tale profilo in realtà non esiste.

Prima di poter inviare la posta, quello che devo fare è aggiungere un utente a msdb database, creare un account di posta del database, quindi creare un profilo e aggiungere l'account di posta del database a quel profilo. Devo quindi aggiungere l'utente al profilo.

Tutto sommato, sarà simile a questo:

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

Ovviamente dovrai sostituire i vari dettagli con i tuoi. Ciò presuppone anche che tu specifichi un server di posta funzionante.

Una volta terminato, dovresti essere pronto per inviare la posta.