Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Kiểm tra Thư chưa gửi trong SQL Server (T-SQL)

Khi gửi email từ SQL Server, bạn có thể kiểm tra mọi thư chưa gửi bằng sysmail_unsentitems xem.

Ví dụ

Dưới đây là một ví dụ về kiểm tra thư chưa gửi. Lưu ý rằng nó cần được chạy trên msdb cơ sở dữ liệu.

SELECT * FROM msdb.dbo.sysmail_unsentitems;

Kết quả (sử dụng đầu ra dọc):

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

Tôi đã sử dụng đầu ra dọc ở đây để bạn không cần phải cuộn sang ngang để xem tất cả các cột.

Trong trường hợp này, có một email chưa được gửi. Tôi đã tình cờ chạy truy vấn này ngay sau khi thực thi msdb.dbo.sp_send_dbmail để gửi thư này.

Hóa ra, thư được gửi ngay sau khi tôi sao chép các kết quả ở trên và bây giờ khi tôi chạy lại truy vấn đó, tôi không nhận được kết quả nào (tức là không có email nào chưa được gửi).

SELECT * FROM msdb.dbo.sysmail_unsentitems;

Kết quả:

(0 rows affected)

Tuy nhiên, chỉ vì không có email chưa gửi, điều đó không có nghĩa là không có email nào không thành công.

Bạn có thể truy vấn sysmail_faileditems để trả về danh sách các email bị lỗi.

Bạn cũng có thể truy vấn sysmail_sentitems để nhận tất cả các email đã gửi.

Bạn cũng có thể truy vấn sysmail_allitems để nhận tất cả các email (đã gửi, chưa gửi, không thành công và đang thử lại).


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách lọc Hàng có Giá trị Null trong Câu lệnh Chọn trong SQL Server - Hướng dẫn sử dụng SQL Server / TSQL Phần 110

  2. Cách chỉ trả lại giá trị số trong SQL Server

  3. ON [PRIMARY] có nghĩa là gì?

  4. Tự động xóa các giao dịch bị quên trong MS SQL Server

  5. 5 thủ thuật để đảm bảo hiệu suất cao nhất của máy chủ SQL