sql >> Databáze >  >> RDS >> Sqlserver

Vytvoření výchozího veřejného profilu pro databázovou poštu na serveru SQL Server (T-SQL)

Když použijete sp_send_dbmail uloženou proceduru pro odesílání e-mailů na SQL Server, obvykle zahrnete @profile_name argument k určení, který profil se má použít.

Pokud však tento argument vynecháte, sp_send_dbmail použije výchozí soukromý profil pro aktuálního uživatele. Pokud uživatel nemá výchozí soukromý profil, sp_send_dbmail použije výchozí veřejný profil pro msdb databáze.

Pokud není nakonfigurováno žádné z těchto nastavení, zobrazí se následující chyba:

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.

Pokud se vám zobrazuje tato chyba, máte v zásadě tři možnosti:

  • Upřesněte, který profil chcete použít, a to uvedením @profile_name argument při volání sp_send_dbmail postup.
  • Vytvořte výchozí soukromý profil pro aktuálního uživatele.
  • Vytvořte veřejný profil pro msdb databáze.

Tento článek poskytuje příklad třetí možnosti:vytvořit veřejný profil pro msdb databáze.

Příklad

Zde je příklad, který prochází procesem vytvoření profilu Database Mail, vytvoření účtu Database Mail, přidání účtu do profilu a poté udělení veřejného přístupu k tomuto profilu.

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

Poslední řádek je ve skutečnosti část, která z něj dělá výchozí veřejný profil.

Pomocí @is_default = 1 , nastavuji tento profil jako výchozí veřejný profil. Pokud bych použil @is_default = 0 místo toho by to nebyl výchozí veřejný profil.

Chcete-li profil zveřejnit, zadejte @principal_id z 0 nebo @principal_name z public . Veřejný profil je dostupný všem uživatelům v msdb databáze (ačkoli uživatelé musí být také členy DatabaseMailUserRole spustit sp_send_dbmail ).

Upozorňujeme, že může existovat pouze jeden výchozí veřejný profil.

Aktualizovat stávající profil

Pokud již máte veřejný profil, ale není to výchozí veřejný profil, můžete použít sysmail_update_principalprofile_sp to změnit.

Příklad:

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


  1. Jak vytvořit tabulku se dvěma nebo více cizími klíči pomocí místnosti Android?

  2. Proč se sekvence ID SQL nesynchronizují (konkrétně pomocí Postgres)?

  3. Úplný seznam kolací podporovaných MariaDB

  4. Jak DATE_ADD() funguje v MariaDB