Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Napraw „nazwa profilu jest nieprawidłowa” podczas wysyłania poczty z serwera SQL

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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zastąp Optymalizator zapytań dla połączeń T-SQL za pomocą FORCEPLAN

  2. Jak @@MAX_CONNECTIONS działa w SQL Server

  3. Wewnętrzne siedem sortowań SQL Server – część 1

  4. Usuń wszystkie tabele, których nazwy zaczynają się od określonego ciągu

  5. Jak zadokować / oddokować zapytania dotyczące okien i innych kart w SQL Server Management Studio (SSMS) — samouczek SQL Server / TSQL, część 21