Wanneer u de sp_send_dbmail
. gebruikt opgeslagen procedure om e-mails in SQL Server te verzenden, zou u normaal gesproken de @profile_name
argument om aan te geven welk profiel moet worden gebruikt.
Als u dit argument echter weglaat, sp_send_dbmail
zal het standaard privéprofiel voor de huidige gebruiker gebruiken. Als de gebruiker geen standaard privéprofiel heeft, sp_send_dbmail
zal het standaard openbare profiel gebruiken voor de msdb
database.
Als geen van deze is geconfigureerd, krijgt u de volgende foutmelding:
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.
Als je deze foutmelding krijgt, heb je in principe drie opties:
- Geef op welk profiel u wilt gebruiken door de
@profile_name
. op te nemen argument bij het aanroepen van desp_send_dbmail
procedure. - Maak een standaard privéprofiel voor de huidige gebruiker.
- Maak een openbaar profiel voor de
msdb
database.
Dit artikel geeft een voorbeeld van de derde optie:maak een openbaar profiel aan voor de msdb
database.
Voorbeeld
Hier is een voorbeeld dat het proces doorloopt van het maken van een Database Mail-profiel, het maken van een Database Mail-account, het toevoegen van het account aan het profiel en het verlenen van openbare toegang tot dat profiel.
-- 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;
De laatste regel is eigenlijk het deel dat het het standaard openbare profiel maakt.
Door @is_default = 1
. te gebruiken , ik stel dit profiel in als het standaard openbare profiel. Als ik @is_default = 0
. had gebruikt in plaats daarvan zou het niet het standaard openbare profiel zijn.
Om een profiel openbaar te maken, specificeert u een @principal_id
van 0
of een @principal_name
van public
. Een openbaar profiel is beschikbaar voor alle gebruikers in de msdb
database (hoewel gebruikers ook lid moeten zijn van DatabaseMailUserRole
om sp_send_dbmail
uit te voeren ).
Houd er rekening mee dat er maar één standaard openbaar profiel kan zijn.
Een bestaand profiel bijwerken
Als je al een openbaar profiel hebt, maar dit niet het standaard openbare profiel is, kun je sysmail_update_principalprofile_sp
gebruiken om dat te veranderen.
Voorbeeld:
EXECUTE msdb.dbo.sysmail_update_principalprofile_sp
@profile_name = 'DB Public Profile',
@principal_name = 'public',
@is_default = 1;