我也遇到过类似的问题,但不幸的是没有得到答案。最后,我所能做的就是监视QUEUE,当它崩溃时,只需重新启动它即可。我使用以下存储过程来做到这一点。
DECLARE @state nvarchar(50), @length int, @last_activated_time datetimeCREATE TABLE #MailStatusTempTable([queue_type] nvarchar(max),[length] int,[state] nvarchar(max),[last_empty_rowset_time] datetime,[last_activated_time] datetime)INSERT INTO #MailStatusTempTable EXEC msdb.dbo.sysmail_help_queue_sp @queue_type = 'mail'SELECt TOP 1 @state = [State],@length=[length],@last_activated_time = [last_activated_time] FROM #MailStatusTempTableDROP TABLE #MailStatusTempTableIF (@length>0)BEGIN IF (@state <> 'RECEIVES_OCCURRING') BEGIN IF (DATEDIFF(minute,@last_activated_time,GETDATE())>5) --ensuring 5 minutes has passed since last activity (your timeout might be different) BEGIN EXEC msdb.dbo.sysmail_stop_sp EXEC msdb.dbo.sysmail_start_sp END ENDEND
希望对您有所帮助。如果是这样,请记住将其标记为答案!
亲切的问候,威廉



