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

Ret "profilnavn er ikke gyldigt" ved afsendelse af e-mail fra SQL Server

Hvis du prøver at sende mail fra SQL Server, men du får et "profilnavn er ikke gyldigt", er det sandsynligvis fordi du ikke har angivet en gyldig profil for @profile_name argument.

Eksempel

Lad os f.eks. sige, at du bruger følgende T-SQL-kode til at sende en notifikations-e-mail til administratoren, når et SQL Server Agent-job mislykkes:

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ølgende fejlmeddelelse:

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

Denne fejl fortæller os specifikt, at "profilnavnet ikke er gyldigt".

For at sende e-mail med Database Mail skal du angive en profil i stedet for en brugerkonto direkte. I dette tilfælde specificerede jeg en @profile_name af DB Admin Profile , men sådan en profil findes faktisk ikke.

Før jeg kan sende e-mail, er det, jeg skal gøre, at tilføje en bruger til msdb database, opret en databasemailkonto, opret derefter en profil og føj databasemailkontoen til den profil. Jeg skal så tilføje brugeren til profilen.

Alt i alt vil det se nogenlunde sådan her ud:

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

Det er klart, at du skal erstatte de forskellige detaljer med dine egne. Dette forudsætter også, at du angiver en mailserver, der virker.

Når du er færdig, skulle du være klar til at sende mail.


  1. Sådan eksporteres Oracle-forespørgselsresultater til en JSON-fil, når du bruger SQLcl

  2. MS-Access Recordset og klassemodul

  3. Zip ved hjælp af Oracle Stored Procedure

  4. Hvordan laver man en case-sensitiv søgning i WHERE-klausulen (jeg bruger SQL Server)?