Невозможно очистить очередь sysmail SQL Server - PullRequest
0 голосов
/ 22 сентября 2019

Прошлой ночью из-за какого-то плохого кода мой SQL Server попытался отправить миллион писем.После 10к письма начали уходить в очередь.Я немедленно остановил службу sysmail, используя exec sysmail_stop_sp.

Затем я удалил все записи из sysmail_allitems, sysmail_faileditems, sysmail_send_retries, sysmail_senditems и sysmail_unsentitems.

Я такжеочищено sysmail_event_log.

Предполагая, что это очистит мою почтовую очередь, я запустил службы sysmail, используя

exec sysmail_start_sp

Но, к моему удивлению, sysmail все еще пытается отправлять электронные письма, но не может найтиих в sysmail_allitems.

Я проверил почтовую очередь, используя msdb.dbo.sysmail_help_queue_sp, и она показывает очередь с queue_type 'mail', показывающую очередь из миллиона почтовых сообщений.

Я перепроверил все таблицы, и все онипустыГде эта очередь извлекается?

Хотя электронное письмо не было отправлено, но сервер все равно пытался получить каждое письмо, которое длилось несколько часов.

Есть идеи, откуда берется очередь?

1 Ответ

0 голосов
/ 22 сентября 2019
  1. Останов агента SQL Server
  2. Настройка его запуска вручную (с помощью диспетчера конфигурации SQL Server)
  3. Перезапустите SQL Server, когда сможете.
  4. Попробуйте выполнить:
DECLARE @GETDATE datetime  
SET @GETDATE = GETDATE();  
EXECUTE msdb.dbo.sysmail_delete_mailitems_sp @sent_before = @GETDATE;  
GO 

Это должно удалить их всех.Причина, по которой я упомянул об остановке агента, заключается в том, что он не блокирует их и не останавливает их удаление.

Установите Агента обратно на автоматический запуск. Перезапустите Агент

И, надеюсь, не будет потока электронной почты.Вам также нужно будет проверить все, что находится в очереди на почтовом сервере.

Надеюсь, это поможет.

...