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