Saya memiliki contoh SQL Server 2012 yang berjalan di bawah akun layanan terkelola. Saya telah mengkonfigurasi email basis data dengan satu akun dan saya mencoba mengirim email percobaan, tetapi saya mendapatkan beberapa kesalahan dalam log peristiwa server:
Mesin Contoh Database = MYINSTANCE; Mail PID = 2132; Pesan Kesalahan: Pembaruan ke database gagal. Alasan: Izin EXECUTE ditolak pada objek 'sysmail_logmailevent_sp', database 'msdb', schema 'dbo'.
Mesin Contoh Database = MYINSTANCE; Mail PID = 2212; Jenis Pengecualian: Microsoft.SqlServer.Management.SqlIMail.Server.Common.BaseException Pesan: Pembacaan pada database gagal. Alasan: Izin EXECUTE ditolak pada objek 'sp_readrequest', database 'msdb', skema 'dbo'. Data: System.Collections.ListDictionaryInternal TargetSite: Microsoft.SqlServer.Management.SqlIMail.Server.Objects.QueueItem GetQueueItemFromCommand (System.Data.SqlClient.SqlCommand) BantuanTautan: NULL Sumber: DatabaseMailEngine
Jika saya membuat akun yang menjalankan proses SQL Server sebagai sysadmin, kesalahan ini hilang, dan surat berhasil dikirim. Namun, semua penelitian yang saya lakukan menunjukkan bahwa dengan memberikan akun ini DatabaseMailUserRole
peran dalam msdb
database harus memadai. Saya sudah melakukan ini dan masih menerima kesalahan yang sama.
Saya melihat-lihat di BOL tetapi tidak menemukan apa pun.
sumber
Jawaban:
Akun layanan SQL Server Agent memerlukan izin sysadmin pada instance.
Microsoft KB
sumber