sql >> Database >  >> RDS >> Sqlserver

Maak een standaard openbaar profiel voor databasemail in SQL Server (T-SQL)

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


  1. Django:Groep per maand zoeken

  2. Hoe het maximale aantal verbindingen in MySQL te vergroten?

  3. Een databasenaam in SQL Server wijzigen met T-SQL

  4. Een benadering van indexafstemming - Deel 2