最近用sql Server发邮件,做了一个JOB,定时发送,由于发送量过大,导致邮件队列大量排队。
刚开始感觉很奇怪,我把JOB全部都停掉,但是sqlservr.exe进度的cpu还是高居不下,后来分析原因,发现上面的原因。
msdb数据库中存储过程:
邮件队列信息存储在系统表中,请问应该如何删除?(因目前邮件队列数据较多,阻塞了正常发送邮件)
Take look at sysmail_delete_mailitems_sp.
Deletes e-mails of the type specified by sent_status which is varchar(8) with no default. Valid entries are sent,unsent,retrying,and Failed.
上面存储过程的4个状态参数都试过了,执行完后,再执行sysmail_help_status_sp,其中的length值始终保持先前的数值不变
Did you check with sysmail_help_queue_sp?
对,一直用这条命令检查邮件队列
这样检查过了吗?“ sysmail_event_log” 和“Windows 应用程序事件日志”是否有相关信息。如果没有请参照下面的网址解决:
http://msdn.microsoft.com/zh-cn/library/ms189959.aspx
已参考http://msdn.microsoft.com/zh-cn/library/ms189959.aspx
SELECT is_broker_enabled FROM sys.databases WHERE name = 'msdb'; 返回1
EXECUTE dbo.sysmail_start_sp 可以启动服务
但执行EXECUTE dbo.sysmail_help_status_sp, 状态始终是inactive
等空闲一段时间之后状态也会是inactive的,关键是队列长度:正常的是发送完的为0。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。