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

Periksa Surat Tidak Terkirim di SQL Server (T-SQL)

Saat mengirim email dari SQL Server, Anda dapat memeriksa email yang tidak terkirim dengan sysmail_unsentitems lihat.

Contoh

Berikut adalah contoh memeriksa email yang tidak terkirim. Perhatikan bahwa itu harus dijalankan pada msdb basis data.

SELECT * FROM msdb.dbo.sysmail_unsentitems;

Hasil (menggunakan keluaran vertikal):

mailitem_id                 | 4
profile_id                  | 1
recipients                  | [email protected]
copy_recipients             | NULL
blind_copy_recipients       | NULL
subject                     | SQL Server Agent Job: FAILED
body                        | Your favorite SQL Server Agent job just failed
body_format                 | TEXT
importance                  | NORMAL
sensitivity                 | NORMAL
file_attachments            | NULL
attachment_encoding         | MIME
query                       | NULL
execute_query_database      | NULL
attach_query_result_as_file | 0
query_result_header         | 1
query_result_width          | 256
query_result_separator      |  
exclude_query_output        | 0
append_query_error          | 0
send_request_date           | 2020-08-24 04:11:19.300
send_request_user           | sa
sent_account_id             | NULL
sent_status                 | unsent
sent_date                   | NULL
last_mod_date               | 2020-08-24 04:11:19.300
last_mod_user               | sa

Saya menggunakan output vertikal di sini sehingga Anda tidak perlu menggulir ke samping untuk melihat semua kolom.

Dalam hal ini, ada satu email yang belum terkirim. Saya kebetulan menjalankan kueri ini segera setelah menjalankan msdb.dbo.sp_send_dbmail untuk mengirim surat ini.

Ternyata, email dikirim segera setelah saya menyalin hasil di atas, dan sekarang ketika saya menjalankan kueri itu lagi, saya mendapatkan hasil nol (yaitu tidak ada email yang tidak terkirim).

SELECT * FROM msdb.dbo.sysmail_unsentitems;

Hasil:

(0 rows affected)

Namun, hanya karena tidak ada email yang tidak terkirim, bukan berarti tidak ada yang gagal.

Anda dapat menanyakan sysmail_faileditems untuk mengembalikan daftar email yang gagal.

Anda juga dapat menanyakan sysmail_sentitems untuk mendapatkan semua email terkirim.

Anda juga dapat menanyakan sysmail_allitems untuk mendapatkan semua email (terkirim, tidak terkirim, gagal, dan mencoba lagi).


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pengenalan SQL Server

  2. Mengapa kueri berparameter menghasilkan rencana kueri yang jauh lebih lambat vs kueri non-parameter?

  3. Bagaimana cara menetapkan hasil exec ke variabel sql?

  4. Hindari Penamaan User Stored Procedures SP% atau SP_%

  5. Memanggil prosedur tersimpan dengan nilai kembali