Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Utwórz domyślny profil publiczny dla poczty bazy danych w programie SQL Server (T-SQL)

Kiedy używasz sp_send_dbmail procedura składowana do wysyłania wiadomości e-mail w SQL Server, zwykle zawiera @profile_name argument, aby określić, którego profilu użyć.

Jeśli jednak pominiesz ten argument, sp_send_dbmail użyje domyślnego profilu prywatnego dla bieżącego użytkownika. Jeśli użytkownik nie ma domyślnego profilu prywatnego, sp_send_dbmail użyje domyślnego profilu publicznego dla msdb baza danych.

Jeśli żadna z tych opcji nie zostanie skonfigurowana, otrzymasz następujący błąd:

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.

Jeśli otrzymujesz ten błąd, zasadniczo masz trzy opcje:

  • Określ, którego profilu chcesz użyć, dołączając @profile_name argument podczas wywoływania sp_send_dbmail procedura.
  • Utwórz domyślny prywatny profil dla bieżącego użytkownika.
  • Utwórz profil publiczny dla msdb baza danych.

Ten artykuł zawiera przykład trzeciej opcji:utwórz profil publiczny dla msdb baza danych.

Przykład

Oto przykład, który przechodzi przez proces tworzenia profilu poczty bazy danych, tworzenia konta poczty bazy danych, dodawania konta do profilu, a następnie przyznawania publicznego dostępu do tego 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;

Ostatnia linia jest w rzeczywistości częścią, która sprawia, że ​​jest to domyślny profil publiczny.

Używając @is_default = 1 , ustawiam ten profil jako domyślny profil publiczny. Gdybym użył @is_default = 0 zamiast tego nie byłby to domyślny profil publiczny.

Aby ustawić profil jako publiczny, określ @principal_id z 0 lub @principal_name z public . Profil publiczny jest dostępny dla wszystkich użytkowników w msdb baza danych (chociaż użytkownicy muszą być również członkami DatabaseMailUserRole wykonać sp_send_dbmail ).

Pamiętaj, że może istnieć tylko jeden domyślny profil publiczny.

Zaktualizuj istniejący profil

Jeśli masz już profil publiczny, ale nie jest to domyślny profil publiczny, możesz użyć sysmail_update_principalprofile_sp by to zmienić.

Przykład:

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. Wstawianie zbiorcze programu SQL Server — część 2

  2. Zwróć liczbę wierszy, których dotyczą instrukcje UPDATE

  3. Do czego służy tabela systemowa master..spt_values ​​i jakie jest znaczenie jej wartości?

  4. Operator XOR T-SQL

  5. Co to jest prosty program lub skrypt wiersza poleceń do tworzenia kopii zapasowych baz danych serwera SQL?