sql >> Databasteknik >  >> RDS >> Sqlserver

Skapa en offentlig standardprofil för databaspost i SQL Server (T-SQL)

När du använder sp_send_dbmail lagrad procedur för att skicka e-postmeddelanden i SQL Server, skulle du vanligtvis inkludera @profile_name argument för att ange vilken profil som ska användas.

Men om du utelämnar detta argument, sp_send_dbmail kommer att använda den privata standardprofilen för den aktuella användaren. Om användaren inte har en privat standardprofil, sp_send_dbmail kommer att använda den offentliga standardprofilen för msdb databas.

Om ingen av dessa är konfigurerad får du följande felmeddelande:

Msg 14636, Level 16, State 1, Procedure msdb.dbo.sp_send_dbmail, Line 112
No global profile is configured. Specify a profile name in the @profile_name parameter.

Om du får det här felet har du i princip tre alternativ:

  • Ange vilken profil som ska användas genom att inkludera @profile_name argument när du anropar sp_send_dbmail förfarande.
  • Skapa en privat standardprofil för den aktuella användaren.
  • Skapa en offentlig profil för msdb databas.

Den här artikeln ger ett exempel på det tredje alternativet:skapa en offentlig profil för msdb databas.

Exempel

Här är ett exempel som går igenom processen att skapa en Databas Mail-profil, skapa ett Databas Mail-konto, lägga till kontot i profilen och sedan ge offentlig åtkomst till den profilen.

-- Create a Database Mail profile  
EXECUTE msdb.dbo.sysmail_add_profile_sp  
    @profile_name = 'DB Public Profile',  
    @description = 'Public Profile for emails.'; 

-- Create a Database Mail account  
EXECUTE msdb.dbo.sysmail_add_account_sp
    @account_id = 1,
    @account_name = 'DB Public',  
    @description = 'Public account for emails.',  
    @email_address = '[email protected]',  
    @replyto_address = '[email protected]',  
    @display_name = 'DB Public Mailer',  
    @mailserver_name = 'smtp.example',
    @port = 587;

-- Add the account to the profile  
EXECUTE msdb.dbo.sysmail_add_profileaccount_sp  
    @profile_name = 'DB Public Profile',  
    @account_name = 'DB Public',  
    @sequence_number = 1;

-- Grant the public principal access to the profile
EXECUTE msdb.dbo.sysmail_add_principalprofile_sp
    @profile_name = 'DB Public Profile',
    @principal_name = 'public',
    @is_default = 1;

Den sista raden är faktiskt den del som gör den till den offentliga standardprofilen.

Genom att använda @is_default = 1 , jag ställer in den här profilen som den offentliga standardprofilen. Om jag hade använt @is_default = 0 istället skulle det inte vara den offentliga standardprofilen.

För att göra en profil offentlig, ange ett @principal_id av 0 eller en @principal_name av public . En offentlig profil är tillgänglig för alla användare i msdb databas (även om användare också måste vara medlem i DatabaseMailUserRole för att köra sp_send_dbmail ).

Observera att det bara kan finnas en offentlig standardprofil.

Uppdatera en befintlig profil

Om du redan har en offentlig profil, men det inte är den offentliga standardprofilen, kan du använda sysmail_update_principalprofile_sp för att ändra det.

Exempel:

EXECUTE msdb.dbo.sysmail_update_principalprofile_sp
    @profile_name = 'DB Public Profile',
    @principal_name = 'public',
    @is_default = 1;


  1. Databasbackups - Jämför MariaDB Mariabackup och Percona Xtrabackup

  2. CSV i SQL-utvecklare...

  3. Gruppvis maximalt

  4. ExecuteNonQuery för SELECT SQL-sats som returnerar inga rader