Проблемы очереди отправки ссобщений и базы msdb после сбоя:
--An error occurred in Service Broker internal activation while trying to scan the user queue 'msdb.dbo.ExternalMailQueue' for its status. Error: 1222, State: 51. Lock request time out period exceeded. This is an informational message only. No user action is required.
ALTER DATABASE [msdb] SET SINGLE_USER WITH ROLLBACK IMMEDIATE
ALTER DATABASE [msdb] SET DISABLE_BROKER
SELECT is_broker_enabled FROM sys.databases WHERE name = 'msdb' ;
ALTER DATABASE [msdb] SET ENABLE_BROKER
SELECT is_broker_enabled FROM sys.databases WHERE name = 'msdb' ;
ALTER DATABASE [msdb] SET MULTI_USER
--Очистить очередь сообщений(clean mail queue)
use msdb
declare @conversation_handle uniqueidentifier
declare cr cursor for
select top 1000 conversation_handle
from ExternalMailQueue
where conversation_handle is not null
order by queuing_order desc
open cr
fetch next from cr into @conversation_handle
while @@fetch_status=0
begin
begin try
END CONVERSATION @conversation_handle;
end try
begin catch
print cast(@conversation_handle as varchar(max))+' Failed'
end catch
fetch next from cr into @conversation_handle
end
close cr
deallocate cr
EXEC msdb.dbo.sysmail_stop_sp;
EXEC msdb.dbo.sysmail_help_status_sp;
EXEC msdb.dbo.sysmail_start_sp;
EXEC msdb.dbo.sysmail_help_status_sp;
EXEC msdb.dbo.sysmail_help_queue_sp @queue_type = 'mail'; --Если поле state будет - INACTIVE(if Database Mail Queue stuck in INACTIVE State - restart SQL Server), потребуется перезагрузить SQL Server
Комментарии пользователей
Эту новость ещё не комментировалиНаписать комментарий
Анонимам нельзя оставоять комментарии, зарегистрируйтесь!