Impossibile eliminare l'accesso a SQL Server 2008 R2


8

Alcuni giorni fa avevo creato un account di accesso a SQL Server. Ora devo eliminare lo stesso. Quindi sono andato in SQL Server Management Studio => Sicurezza => Login e ho selezionato il login che voglio eliminare. Visualizza un messaggio informativo che dice

L'eliminazione degli accessi al server non elimina gli utenti del database associati agli accessi. Per completare il processo, eliminare gli utenti in ciascun database. Potrebbe essere necessario prima trasferire la proprietà degli schemi ai nuovi utenti.

Ignorando questo messaggio, quando confermo il processo di eliminazione, ricevo un errore irreversibile che dice

Eliminazione non riuscita per l'accesso "iis_login". (Microsoft.SqlServer.Smo)

Si è verificata un'eccezione durante l'esecuzione di un'istruzione o batch Transact-SQL. (Microsoft.SqlServer.ConnectionInfo)

Questo login è il proprietario di 1 lavoro (i). È necessario eliminare o riassegnare questi lavori prima di poter eliminare l'accesso. (Microsoft SQL Server, errore: 15170)

Come posso cancellare il login quando ci sono lavori (secondo il messaggio sopra) di proprietà del login.

saluti, Nirvan.


Dovrai prima cambiare la proprietà del lavoro o eliminare il lavoro, prima di poter cancellare il login.
Adam Wenger,

Risposte:


13

Se hai molti lavori e non sai quale lavoro appartiene a questo login, questa query ti dirà il nome dei lavori di loro proprietà:

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 volta trovato il lavoro, puoi cancellarlo usando sp_delete_job:: (Da MSDN)

EXEC msdb.dbo.sp_delete_job
    @job_name = N'JobToDelete';

Vedo il lavoro ora con la tua domanda. Questo è stato il lavoro che Asp.Net ha creato per gestire le sue sessioni. Ho già eliminato il database utilizzato da ASP.net per la gestione delle sessioni. Quindi ora vorrei eliminare quel LAVORO. Sfortunatamente, sto eseguendo una versione Express di Management Studio e non ha l'agente SQL Server elencato in Esplora oggetti. Qualche consiglio su come posso fare per cancellare il lavoro?

1
Ho aggiornato la mia risposta per includere come eliminare un lavoro.
Adam Wenger,

Grazie mille Adam. Ha eliminato il lavoro e effettuato l'accesso.

Nessun problema, felice di poterti aiutare.
Adam Wenger,

2

È necessario impostare il proprietario dei lavori su un altro accesso. Se guardi le proprietà dei lavori vedrai chi è il proprietario per loro. Tutto quello che devi fare è cambiarlo in un altro accesso.

Ecco il T-SQL per cambiare il proprietario del lavoro:

use msdb
go

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

Per quanto riguarda gli utenti del database che sono mappati all'account di accesso che si sta tentando di eliminare, se si desidera mantenere gli utenti del database e il loro contesto di sicurezza, fare semplicemente questo:

alter user YourDbUser 
with login = TheLoginThatYouWantTheUserToBeMappedTo

+1 per assistenza con la rimappatura degli utenti e una buona risposta generale. Bel lavoro Shark, come al solito sembra :)
Adam Wenger il

@AdamWenger grazie! Mi piace la tua domanda per trovare i lavori di proprietà di un accesso. +1 per quello!
Thomas Stringer,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.