Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Buat Profil Publik Default untuk Database Mail di SQL Server (T-SQL)

Saat Anda menggunakan sp_send_dbmail prosedur tersimpan untuk mengirim email di SQL Server, Anda biasanya menyertakan @profile_name argumen untuk menentukan profil mana yang akan digunakan.

Namun, jika Anda menghilangkan argumen ini, sp_send_dbmail akan menggunakan profil pribadi default untuk pengguna saat ini. Jika pengguna tidak memiliki profil pribadi default, sp_send_dbmail akan menggunakan profil publik default untuk msdb basis data.

Jika tidak ada yang dikonfigurasi, Anda akan mendapatkan kesalahan berikut:

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.

Jika Anda mendapatkan kesalahan ini, pada dasarnya Anda memiliki tiga opsi:

  • Tentukan profil mana yang akan digunakan, dengan menyertakan @profile_name argumen saat memanggil sp_send_dbmail prosedur.
  • Buat profil pribadi default untuk pengguna saat ini.
  • Buat profil publik untuk msdb basis data.

Artikel ini memberikan contoh opsi ketiga:buat profil publik untuk msdb basis data.

Contoh

Berikut adalah contoh proses pembuatan profil Database Mail, membuat akun Database Mail, menambahkan akun ke profil, lalu memberikan akses publik ke profil tersebut.

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

Baris terakhir sebenarnya adalah bagian yang menjadikannya sebagai profil publik default.

Dengan menggunakan @is_default = 1 , saya menyetel profil ini menjadi profil publik default. Jika saya menggunakan @is_default = 0 sebagai gantinya, itu tidak akan menjadi profil publik default.

Untuk membuat profil publik, tentukan @principal_id dari 0 atau @principal_name dari public . Profil publik tersedia untuk semua pengguna di msdb database (walaupun pengguna juga harus menjadi anggota DatabaseMailUserRole untuk mengeksekusi sp_send_dbmail ).

Perhatikan bahwa hanya ada satu profil publik default.

Memperbarui Profil yang Ada

Jika Anda sudah memiliki profil publik, tetapi itu bukan profil publik default, Anda dapat menggunakan sysmail_update_principalprofile_sp untuk mengubahnya.

Contoh:

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. Apakah mungkin untuk menghapus dari beberapa tabel dalam pernyataan SQL yang sama?

  2. Cara Mengedit Opsi Server Tertaut menggunakan T-SQL

  3. SQL Server SMO mengeluhkan DLL yang hilang

  4. Nama tabel sebagai variabel

  5. Bagaimana cara menghasilkan nomor acak untuk setiap baris dalam pemilihan T-SQL?