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

Tìm hiểu lý do tại sao không gửi được email trong SQL Server (T-SQL)

Nếu bạn đang cố gắng gửi email bằng Thư cơ sở dữ liệu trong SQL Server nhưng không gửi được, bạn có thể kiểm tra sysmail_event_log xem tại sao nó không thành công.

sysmail_event_log dạng xem trả về một hàng cho mỗi thư Windows hoặc SQL Server do hệ thống Thư cơ sở dữ liệu trả về. "Tin nhắn", ý tôi không phải là thông điệp thư thực sự. Ý tôi là một thông báo chẳng hạn như thông báo lỗi giải thích tại sao thư không thành công.

Bạn cũng có thể sử dụng sysmail_configure_sp thủ tục được lưu trữ để xác định loại thông báo nào được ghi lại.

Ví dụ

Dưới đây là một ví dụ để minh họa cách sử dụng sysmail_event_log để trả lại tất cả các tin nhắn.

SELECT * FROM msdb.dbo.sysmail_event_log;

Trên hệ thống của tôi, thông báo này trả về quá nhiều dữ liệu để hiển thị ở đây, nhưng ở đây lại hiển thị một thông báo được trả về.

SELECT * 
FROM msdb.dbo.sysmail_event_log
WHERE log_id = 2;

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

log_id        | 2
event_type    | error
log_date      | 2020-08-24 02:40:53.317
description   | The mail could not be sent to the recipients because of the mail server failure. (Sending Mail using Account 1 (2020-08-24T02:40:52). Exception Message: Could not connect to mail server. (No connection could be made because the target machine actively refused it 127.0.0.1:25).)
process_id    | 68
mailitem_id   | 1
account_id    | NULL
last_mod_date | 2020-08-24 02:40:53.317
last_mod_user | sa

Tôi đã sử dụng đầu ra dọc trong ví dụ này để bạn không phải cuộn sang ngang.

Kiểm tra cấp độ ghi nhật ký của bạn

Bạn có thể sử dụng sysmail_help_configure_sp quy trình được lưu trữ để kiểm tra loại thông báo nào được ghi.

Ví dụ:

EXEC msdb.dbo.sysmail_help_configure_sp 
    @parameter_name = LoggingLevel;

Kết quả:

+--------------+--------------+------------------------------------------------------------------------------+
| paramname    | paramvalue   | description                                                                  |
|--------------+--------------+------------------------------------------------------------------------------|
| LoggingLevel | 2            | Database Mail logging level: normal - 1, extended - 2 (default), verbose - 3 |
+--------------+--------------+------------------------------------------------------------------------------+

Trong trường hợp của tôi, LoggingLevel2 , là giá trị mặc định. Cài đặt này ghi lại các lỗi, cảnh báo và thông báo cung cấp thông tin.

Thay đổi cấp độ ghi nhật ký của bạn

Bạn có thể sử dụng sysmail_configure_sp thủ tục được lưu trữ để thay đổi cấp độ ghi nhật ký của bạn.

Cụ thể, bạn có thể chọn LoggingLevel trong tổng số 1 , 2 hoặc 3 .

Những điều này ghi lại những điều sau:

  1. Chỉ có lỗi.
  2. Lỗi, cảnh báo và thông báo cung cấp thông tin (mặc định).
  3. Lỗi, cảnh báo, thông báo cung cấp thông tin, thông báo thành công và các thông báo nội bộ bổ sung.

Nếu đang khắc phục sự cố, bạn có thể tạm thời thay đổi cấp độ ghi nhật ký của mình thành 3.

Dưới đây là ví dụ về việc thay đổi cấp độ ghi nhật ký thành 3 .

EXECUTE msdb.dbo.sysmail_configure_sp  
    'LoggingLevel', '3';

Sau khi chạy, tôi có thể kiểm tra LoggingLevel của mình lại với sysmail_help_configure_sp thủ tục được lưu trữ.

EXEC msdb.dbo.sysmail_help_configure_sp 
    @parameter_name = LoggingLevel;

Kết quả:

+--------------+--------------+------------------------------------------------------------------------------+
| paramname    | paramvalue   | description                                                                  |
|--------------+--------------+------------------------------------------------------------------------------|
| LoggingLevel | 3            | Database Mail logging level: normal - 1, extended - 2 (default), verbose - 3 |
+--------------+--------------+------------------------------------------------------------------------------+

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Truy vấn để chỉ lấy số từ một chuỗi

  2. Tự động hóa khôi phục kiểm tra cơ sở dữ liệu trong SQL Server

  3. SQL Server Chuyển đổi số nguyên thành chuỗi nhị phân

  4. Tìm hiểu Luôn luôn BẬT Nhóm sẵn có giữa các Phiên bản Máy chủ SQL dựa trên Linux. Phần 1

  5. Ghi tệp csv vào cơ sở dữ liệu SQL Server bằng python