Não foi possível excluir o logon do SQL Server 2008 R2

8

Eu havia criado um logon do SQL Server alguns dias atrás. Agora eu preciso excluir o mesmo. Então, entrei no SQL Server Management Studio => Segurança => Logins e selecionei o logon que desejo excluir. Ele exibe uma mensagem informativa que diz

A exclusão de logons do servidor não exclui os usuários do banco de dados associados aos logons. Para concluir o processo, exclua os usuários em cada banco de dados. Pode ser necessário primeiro transferir a propriedade dos esquemas para novos usuários.

Ignorando esta mensagem, quando confirmo o processo de exclusão, estou recebendo um erro fatal que diz

Falha na queda no logon 'iis_login'. (Microsoft.SqlServer.Smo)

Ocorreu uma exceção ao executar uma instrução ou lote Transact-SQL. (Microsoft.SqlServer.ConnectionInfo)

Este login é o proprietário de 1 trabalho (s). Você deve excluir ou reatribuir esses trabalhos antes que o logon possa ser descartado. (Microsoft SQL Server, Erro: 15170)

Como excluo o login quando há trabalhos (de acordo com a mensagem acima) pertencentes ao login.

Atenciosamente, Nirvan.


fonte
Você precisará primeiro alterar a propriedade do trabalho ou excluir o trabalho antes de poder excluir o logon.
Adam Wenger

Respostas:

13

Se você tiver muitos trabalhos e não souber qual trabalho pertence a esse logon, essa consulta informará o nome dos trabalhos pertencentes a eles:

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'

Depois de encontrar o trabalho, você pode excluí-lo usando sp_delete_job:: (No MSDN)

EXEC msdb.dbo.sp_delete_job
    @job_name = N'JobToDelete';
Adam Wenger
fonte
Agora vejo o trabalho com sua consulta. Esse foi o trabalho que o Asp.Net criou para gerenciar suas sessões. Eu já excluí o banco de dados usado pelo ASP.net para gerenciar sessões. Então agora eu gostaria de excluir esse trabalho. Infelizmente, estou executando uma versão Express do Management Studio e ele não tem o SQLServer Agent listado no Pesquisador de Objetos. Algum conselho sobre como faço para excluir o trabalho?
11
Atualizei minha resposta para incluir como excluir um trabalho.
Adam Wenger
Muito obrigado Adam. Excluiu o trabalho e efetue login com sucesso.
Não é um problema, feliz por poder ajudar.
Adam Wenger
2

Você precisa definir o proprietário dos trabalhos para um login diferente. Se você observar as propriedades dos trabalhos, verá quem é o proprietário para eles. Tudo o que você precisa fazer é mudar isso para outro login.

Aqui está o T-SQL para alterar o proprietário do trabalho:

use msdb
go

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

Quanto aos usuários do banco de dados que estão mapeados para o logon que você está tentando eliminar, se desejar manter os usuários do banco de dados e seu contexto de segurança, faça o seguinte:

alter user YourDbUser 
with login = TheLoginThatYouWantTheUserToBeMappedTo
Thomas Stringer
fonte
+1 para obter ajuda para remapear os usuários e obter uma boa resposta geral. Bom trabalho Tubarão, como de costume, parece :)
Adam Wenger
@AdamWenger obrigado! Gosto da sua consulta ao encontrar os trabalhos que um logon possui. +1 para isso!
Thomas Stringer