Bagikan melalui


Langkah-langkah pemecahan masalah email database umum

Berlaku untuk:SQL ServerAzure SQL Managed Instance

Pemecahan masalah Email Database melibatkan pemeriksaan area umum berikut dari sistem Email Database. Prosedur ini disajikan dalam urutan logis, tetapi dapat dievaluasi dalam urutan apa pun.

Izin

Anda harus menjadi anggota peran server tetap sysadmin untuk memecahkan masalah semua aspek Email Database. Pengguna yang bukan anggota peran server tetap sysadmin hanya dapat memperoleh informasi tentang email yang mereka coba kirim, bukan tentang email yang dikirim oleh pengguna lain.

Apakah email database diaktifkan

  1. Di SQL Server Management Studio, sambungkan ke instans SQL Server dengan menggunakan jendela editor kueri, lalu jalankan kode berikut:

    sp_configure 'show advanced', 1; 
    GO
    RECONFIGURE;
    GO
    sp_configure;
    GO
    

    Di panel hasil, konfirmasikan bahwa run_value untuk XP Email Database diatur ke 1. Jika run_value bukan 1, Email Database tidak diaktifkan. Email Database tidak diaktifkan secara otomatis untuk mengurangi jumlah fitur yang tersedia untuk diserang oleh pengguna berbahaya. Untuk informasi selengkapnya, lihat Memahami Konfigurasi Area Permukaan.

  2. Jika Anda memutuskan bahwa itu sesuai untuk mengaktifkan Email Database, jalankan kode berikut:

    sp_configure 'Database Mail XPs', 1; 
    GO
    RECONFIGURE;
    GO
    
  3. Untuk memulihkan prosedur sp_configure ke status defaultnya, yang tidak menampilkan opsi tingkat lanjut, jalankan kode berikut:

    sp_configure 'show advanced', 0; 
    GO
    RECONFIGURE;
    GO
    

Apakah pengguna dikonfigurasi dengan benar untuk mengirim email

  1. Untuk mengirim Email Database, pengguna harus menjadi anggota peran database DatabaseMailUserRole dalam msdb database. Anggota peran server tetap sysadmin dan msdbperan db_owner secara otomatis adalah anggota peran DatabaseMailUserRole . Untuk mencantumkan semua anggota DatabaseMailUserRole lainnya, jalankan pernyataan berikut:

    EXEC msdb.sys.sp_helprolemember 'DatabaseMailUserRole';
    
  2. Untuk menambahkan pengguna ke peran DatabaseMailUserRole , gunakan pernyataan berikut:

    USE msdb;
    GO
    
    sp_addrolemember @rolename = 'DatabaseMailUserRole'
    ,@membername = '<database user>';
    
  3. Untuk mengirim Email Database, pengguna harus memiliki akses ke setidaknya satu profil Email Database. Untuk mencantumkan pengguna (prinsipal) dan profil yang dapat mereka akses, jalankan pernyataan berikut.

    EXEC msdb.dbo.sysmail_help_principalprofile_sp;
    
  4. Gunakan Wizard Konfigurasi Email Database untuk membuat profil dan memberikan akses ke profil kepada pengguna.

Apakah email database dimulai

  1. Program Eksternal Email Database diaktifkan ketika ada pesan email yang akan diproses. Ketika belum ada pesan yang akan dikirim untuk periode waktu habis yang ditentukan, program akan keluar. Untuk mengonfirmasi aktivasi Email Database dimulai, jalankan pernyataan berikut:

    EXEC msdb.dbo.sysmail_help_status_sp;
    
  2. Jika aktivasi Email Database tidak dimulai, jalankan pernyataan berikut untuk memulainya:

    EXEC msdb.dbo.sysmail_start_sp;
    
  3. Jika program eksternal Email Database dimulai, periksa status antrean email dengan pernyataan berikut:

    EXEC msdb.dbo.sysmail_help_queue_sp @queue_type = 'mail';
    

    Antrean email harus memiliki status RECEIVES_OCCURRING. Antrean status dapat bervariasi dari saat ke saat. Jika status antrean email tidak RECEIVES_OCCURRING, coba mulai ulang antrean. Hentikan antrean menggunakan pernyataan berikut:

EXEC msdb.dbo.sysmail_stop_sp;

Kemudian mulai antrean menggunakan pernyataan berikut:

EXEC msdb.dbo.sysmail_start_sp;

Catatan

Gunakan kolom panjang dalam kumpulan sysmail_help_queue_sp hasil untuk menentukan jumlah email dalam antrean Email.

Apakah masalah memengaruhi beberapa atau semua akun

  1. Jika Anda telah menentukan bahwa beberapa profil tetapi tidak semua profil dapat mengirim email, maka Anda mungkin memiliki masalah dengan akun Email Database yang digunakan oleh profil masalah. Untuk menentukan akun mana yang berhasil mengirim email, jalankan pernyataan berikut:

    SELECT sent_account_id, sent_date FROM msdb.dbo.sysmail_sentitems;
    
  2. Jika profil yang tidak berfungsi tidak menggunakan salah satu akun yang tercantum, ada kemungkinan bahwa semua akun yang tersedia untuk profil tidak berfungsi dengan baik. Untuk menguji akun individual, gunakan Panduan Konfigurasi Email Database untuk membuat profil baru dengan satu akun, lalu gunakan kotak dialog Kirim Email Uji untuk mengirim email menggunakan akun baru.

  3. Untuk melihat pesan kesalahan yang dikembalikan oleh Email Database, jalankan pernyataan berikut:

    SELECT * FROM msdb.dbo.sysmail_event_log;
    

    Catatan

    Email Database menganggap email dikirim ketika berhasil dikirim ke server email SMTP. Kesalahan berikutnya, seperti alamat email penerima yang tidak valid, masih dapat mencegah pengiriman email, tetapi tidak akan terkandung dalam log Email Database.

Coba lagi pengiriman email

  1. Jika Anda telah menentukan bahwa Email Database gagal karena server SMTP tidak dapat dicapai dengan andal, Anda mungkin dapat meningkatkan tingkat pengiriman email yang berhasil dengan meningkatkan berapa kali Database Mail mencoba mengirim setiap pesan. Mulai Wizard Konfigurasi Email Database, dan pilih opsi Tampilkan atau ubah parameter sistem. Atau, Anda dapat mengaitkan lebih banyak akun ke profil sehingga setelah failover dari akun utama, Database Mail menggunakan akun failover untuk mengirim email.

  2. Pada halaman Konfigurasi Parameter Sistem, nilai default lima kali untuk Upaya Coba Lagi Akun dan 60 detik untuk Penundaan Coba Lagi Akun berarti pengiriman pesan akan gagal jika server SMTP tidak dapat dicapai dalam 5 menit. Tingkatkan parameter ini untuk memperpanjang jumlah waktu sebelum pengiriman pesan gagal.

    Catatan

    Ketika sejumlah besar pesan dikirim, nilai default besar dapat meningkatkan keandalan, tetapi akan secara substansial meningkatkan penggunaan sumber daya karena banyak pesan yang dicoba untuk dikirimkan berulang-ulang. Atasi masalah akar dengan mengatasi masalah jaringan atau server SMTP yang mencegah Email Database menghubungi server SMTP dengan segera.

Verifikasi broker layanan diaktifkan untuk msdb

Email database mengharuskan Service Broker diaktifkan untuk msdb database. Verifikasi apakah broker layanan diaktifkan msdb dengan skrip T-SQL berikut:

SELECT is_broker_enabled FROM sys.databases WHERE name = 'msdb' ; -- should be 1

Jika tidak diaktifkan, broker layanan harus diaktifkan. Contoh skrip berikut memerlukan akses eksklusif ke msdb database sistem, sehingga ini mungkin tidak layak untuk dijalankan selama jam kerja yang khas. Untuk informasi selengkapnya, lihat MENGUBAH DATABASE ... ATUR ENABLE_BROKER.

ALTER DATABASE msdb SET ENABLE_BROKER;

Langkah berikutnya