Vincular logins huérfanos en SQL Server

Hola,

Hoy os vamos a exponer como solucionar un problema que aparece con cierta frecuencia, el de los logins huérfanos. Nos ocurre que revisando el log SQL Server o bien al ejecutar un procedimiento después de una migración, nos encontramos con errores del tipo:

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.’

Este error ocurre porque tenemos un login creado a nivel de servidor pero no está asociado en la base de datos con un usuario. En este caso se trata del login «##MS_PolicyEventProcessingLogin##», que ejecuta el procedimiento «[dbo].[sp_syspolicy_events_reader]» en la base datos de sistema msdb.

¿Está asociado el login?

Lo primero que debemos hacer es comprobar si existe, y lo hacemos con:

USE msdb
GO
SELECT * FROM sys.database_principals WHERE [name] = ‘##MS_PolicyEventProcessingLogin##’
GO

Posteriormente debemos asociarlo, y lo hacemos con la siguiente consulta:

use msdb
go
EXEC sp_change_users_login ‘Auto_Fix’ , ‘##MS_PolicyEventProcessingLogin##’;
go

Después de esto funcionaría sin problema.

Esperamos que os haya servido,

Un saludo,

Equipo de base de datos

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *