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