No se puede eliminar el inicio de sesión de SQL Server 2008 R2

8

Había creado un inicio de sesión de SQL Server hace unos días. Ahora necesito eliminar lo mismo. Así que entré en SQL Server Management Studio => Seguridad => Inicios de sesión y seleccioné el inicio de sesión que quiero eliminar. Muestra un mensaje informativo que dice

Eliminar los inicios de sesión del servidor no elimina los usuarios de la base de datos asociados con los inicios de sesión. Para completar el proceso, elimine los usuarios en cada base de datos. Puede ser necesario transferir primero la propiedad de los esquemas a nuevos usuarios.

Ignorando este mensaje, cuando confirmo el proceso de eliminación recibo un error fatal que dice

Error al soltar el inicio de sesión 'iis_login'. (Microsoft.SqlServer.Smo)

Se produjo una excepción al ejecutar una instrucción o lote de Transact-SQL. (Microsoft.SqlServer.ConnectionInfo)

Este inicio de sesión es el propietario de 1 trabajo (s). Debe eliminar o reasignar estos trabajos antes de que se pueda eliminar el inicio de sesión. (Microsoft SQL Server, error: 15170)

¿Cómo elimino el inicio de sesión cuando hay trabajos (de acuerdo con el mensaje anterior) propiedad del inicio de sesión?

saludos, Nirvan.


fuente
Tendrá que cambiar primero la propiedad del trabajo, o eliminar el trabajo, antes de poder eliminar el inicio de sesión.
Adam Wenger, el

Respuestas:

13

Si tiene muchos trabajos y no sabe qué trabajo es propiedad de este inicio de sesión, esta consulta le indicará el nombre de los trabajos que son propiedad de ellos:

SELECT j.name
FROM msdb.dbo.sysjobs AS j
INNER JOIN sys.syslogins AS l ON j.owner_sid = l.sid
WHERE l.name = 'loginYouWantToDelete'

Una vez que haya encontrado el trabajo, puede eliminarlo usando sp_delete_job:: (Desde MSDN)

EXEC msdb.dbo.sp_delete_job
    @job_name = N'JobToDelete';
Adam Wenger
fuente
Veo el trabajo ahora con su consulta. Este fue el trabajo que Asp.Net creó para administrar sus sesiones. Ya he eliminado la base de datos que ASP.net utilizó para administrar las sesiones. Así que ahora me gustaría eliminar ese TRABAJO. Desafortunadamente, estoy ejecutando una versión Express de Management Studio y no tiene el Agente SQLServer listado en el Explorador de objetos. ¿Algún consejo sobre cómo hago para eliminar el trabajo?
1
He actualizado mi respuesta para incluir cómo eliminar un trabajo.
Adam Wenger, el
Muchas gracias Adam. Eliminó el trabajo e inicie sesión correctamente.
No hay problema, me alegro de poder ayudar.
Adam Wenger, el
2

Debe configurar el propietario de los trabajos para un inicio de sesión diferente. Si observa las propiedades de los trabajos, verá quién es el propietario para ellos. Todo lo que tiene que hacer es cambiar eso a otro inicio de sesión.

Aquí está el T-SQL para cambiar el propietario del trabajo:

use msdb
go

exec sp_update_job @job_name= 'Your Job Name', 
@owner_login_name= 'Your New Job Owner'
go

En cuanto a los usuarios de la base de datos que están asignados al inicio de sesión que está tratando de eliminar, si desea mantener a los usuarios de la base de datos y su contexto de seguridad, simplemente hágales esto:

alter user YourDbUser 
with login = TheLoginThatYouWantTheUserToBeMappedTo
Thomas Stringer
fuente
+1 para obtener ayuda con la reasignación de usuarios y una buena respuesta general. Buen trabajo Shark, como siempre parece :)
Adam Wenger
@AdamWenger gracias! Me gusta su consulta para encontrar los trabajos que posee un inicio de sesión. +1 por eso!
Thomas Stringer el