Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Създайте публичен профил по подразбиране за поща от база данни в SQL Server (T-SQL)

Когато използвате sp_send_dbmail съхранена процедура за изпращане на имейли в SQL Server, обикновено включвате @profile_name аргумент, за да посочите кой профил да използвате.

Ако обаче пропуснете този аргумент, sp_send_dbmail ще използва частния профил по подразбиране за текущия потребител. Ако потребителят няма частен профил по подразбиране, sp_send_dbmail ще използва публичния профил по подразбиране за msdb база данни.

Ако нито едно от тях не е конфигурирано, ще получите следната грешка:

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.

Ако получавате тази грешка, основно имате три опции:

  • Посочете кой профил да използвате, като включите @profile_name аргумент при извикване на sp_send_dbmail процедура.
  • Създайте частен профил по подразбиране за текущия потребител.
  • Създайте публичен профил за msdb база данни.

Тази статия предоставя пример за третата опция:създайте публичен профил за msdb база данни.

Пример

Ето пример, който минава през процеса на създаване на профил на Database Mail, създаване на акаунт в Database Mail, добавяне на акаунта към профила, след което предоставяне на публичен достъп до този профил.

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

Последният ред всъщност е частта, която го прави публичен профил по подразбиране.

С помощта на @is_default = 1 , задавам този профил като обществен профил по подразбиране. Ако използвах @is_default = 0 вместо това няма да е общественият профил по подразбиране.

За да направите профил публичен, посочете @principal_id от 0 или @principal_name на public . Публичният профил е достъпен за всички потребители в msdb база данни (въпреки че потребителите трябва също да са членове на DatabaseMailUserRole за изпълнение на sp_send_dbmail ).

Имайте предвид, че може да има само един обществен профил по подразбиране.

Актуализиране на съществуващ профил

Ако вече имате публичен профил, но това не е общественият профил по подразбиране, можете да използвате sysmail_update_principalprofile_sp за да промените това.

Пример:

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. STRING_SPLIT() в SQL Server 2016:Продължение №2

  2. Предотвратете запазването на промени, които изискват пресъздаване на таблицата, отрицателни ефекти

  3. Как да извикам съхранена процедура с аргументи, използвайки sqlcmd.exe?

  4. Вмъкване на SQL Server, ако не съществува, най-добрата практика

  5. Как да създадете таблица в SQL Server