Når du bruger sp_send_dbmail gemt procedure til at sende e-mails i SQL Server, vil du typisk inkludere @profile_name argument for at angive, hvilken profil der skal bruges.
Men hvis du udelader dette argument, sp_send_dbmail vil bruge den private standardprofil for den aktuelle bruger. Hvis brugeren ikke har en standard privat profil, sp_send_dbmail vil bruge den offentlige standardprofil for msdb database.
Hvis ingen af disse er konfigureret, får du følgende fejlmeddelelse:
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.
Hvis du får denne fejl, har du grundlæggende tre muligheder:
- Angiv, hvilken profil der skal bruges, ved at inkludere
@profile_nameargument, når du kaldersp_send_dbmailprocedure. - Opret en privat standardprofil for den aktuelle bruger.
- Opret en offentlig profil for
msdbdatabase.
Denne artikel giver et eksempel på den tredje mulighed:opret en offentlig profil for msdb database.
Eksempel
Her er et eksempel, der går gennem processen med at oprette en Database Mail-profil, oprette en Database Mail-konto, tilføje kontoen til profilen og derefter give offentlig adgang til den profil.
-- 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 = 'example@sqldat.com',
@replyto_address = 'example@sqldat.com',
@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 sidste linje er faktisk den del, der gør den til den offentlige standardprofil.
Ved at bruge @is_default = 1 , jeg indstiller denne profil til at være den offentlige standardprofil. Hvis jeg havde brugt @is_default = 0 i stedet ville det ikke være den offentlige standardprofil.
For at gøre en profil offentlig, skal du angive en @principal_id af 0 eller en @principal_name af public . En offentlig profil er tilgængelig for alle brugere i msdb database (selvom brugere også skal være medlem af DatabaseMailUserRole for at udføre sp_send_dbmail ).
Bemærk, at der kun kan være én offentlig standardprofil.
Opdater en eksisterende profil
Hvis du allerede har en offentlig profil, men det ikke er den offentlige standardprofil, kan du bruge sysmail_update_principalprofile_sp for at ændre det.
Eksempel:
EXECUTE msdb.dbo.sysmail_update_principalprofile_sp
@profile_name = 'DB Public Profile',
@principal_name = 'public',
@is_default = 1;