首页 > 解决方案 > SQL Server 停止在 sql server 2014 中发送数据库邮件

问题描述

我们正面临 sql server 2014 中的 DB 邮件问题。

突然,它停止向用户发送电子邮件,在 msdb.dbo.sysmail_allitems 中声明 UNSENT 状态。

请帮忙。

标签: sql-serverdbmail

解决方案


检查是否有人禁用代理或禁用发送电子邮件。这两个查询应该返回 1。

SELECT value_in_use
FROM sys.configurations
WHERE name = 'Database Mail XPs';

SELECT is_broker_enabled 
FROM sys.databases 
WHERE name='MSDB';

传输队列中有记录吗?没有记录意味着好的。如果有记录,请注意字段transmission_status。这是写此消息在队列中的原因。这通常是一条错误消息,解释了发送消息失败的原因。

select * from msdb.sys.transmission_queue ;

尝试清理“外部邮件队列”

WHILE EXISTS
(
    SELECT 'ExternalMailQueue' AS ServiceBrokerQueueName, 
           *
    FROM [msdb].[dbo].[ExternalMailQueue]
)
    BEGIN
        WAITFOR(
        RECEIVE TOP (1) conversation_group_id FROM [ExternalMailQueue]), TIMEOUT 1000;
    END;

推荐阅读