Erro – The activated proc ‘[dbo].[sp_syspolicy_events_reader]’ running…

Olá pessoal,

A dica de hoje pode ser raro de encontrar no dia-a-dia, mas você pode passar por ele em algum momento, por exemplo, ao levar o banco msdb de uma instância X para uma Y, ou seja, instâncias de versões iguais, mas uma nova instalação.

Cenário

Ao acessar o SQL Server Error Log, você observa o registro da mensagem de erro a seguir diversas vezes:

“The activated proc ‘[dbo].[sp_syspolicy_events_reader]’ running on queue ‘msdb.dbo.syspolicy_event_queue’ output the following: ‘Cannot execute as the database principal because the principal “##MS_PolicyEventProcessingLogin##” does not exist, this type of principal cannot be impersonated, or you do not have permission.'”

Sintoma

Acesse o banco de dados msdb e execute o seguinte comando:

USE msdb;
GO
exec sp_change_users_login 'report';
GO

É bem provável que será retornado que o usuário ##MS_PolicyEventProcessingLogin## encontra-se órfão.

Solução

A solução é bem simples, mas ocorre que ao mover o msdb para uma outra instância, então o login ##MS_PolicyEventProcessingLogin## possui internamente um SID diferente do usuário localizado no banco msdb. Você precisa apenas, atualizar esse SID e o comando será o seguinte:

use msdb;
GO
EXEC sp_change_users_login 'Update_One', '##MS_PolicyEventProcessingLogin##','##MS_PolicyEventProcessingLogin##';
GO
-- Opcionalmente, execute a procedure abaixo para fazer um recycle do Error log 
-- que pode estar com bastante mensagens de erro até este momento.
exec sp_cycle_errorlog;
GO

Acesse novamente o SQL Server Error Log e você irá verificar que as mensagens de erro se findaram!

Espero que esta dica, possa ter contribuído para o seu dia a dia.

Vithor da Silva e Silva | Consultor e Instrutor | SQL Server e Power BI
vithor@vssti.com.br

Deixe uma resposta