SQL Server 2008 R2-Anmeldung kann nicht gelöscht werden

8

Ich hatte vor einigen Tagen ein SQL Server-Login erstellt. Jetzt muss ich das gleiche löschen. Also ging ich zu SQL Server Management Studio => Sicherheit => Anmeldungen und wählte die Anmeldung aus, die ich löschen möchte. Es wird eine Informationsmeldung angezeigt, die besagt

Durch das Löschen von Serveranmeldungen werden die mit den Anmeldungen verknüpften Datenbankbenutzer nicht gelöscht. Löschen Sie die Benutzer in jeder Datenbank, um den Vorgang abzuschließen. Möglicherweise muss zuerst das Eigentum an Schemas auf neue Benutzer übertragen werden.

Wenn ich diese Meldung ignoriere und den Löschvorgang bestätige, wird ein schwerwiegender Fehler angezeigt, der besagt

Löschen fehlgeschlagen für Login 'iis_login'. (Microsoft.SqlServer.Smo)

Beim Ausführen einer Transact-SQL-Anweisung oder eines Batch-Stapels ist eine Ausnahme aufgetreten. (Microsoft.SqlServer.ConnectionInfo)

Dieses Login ist der Besitzer von 1 Job (s). Sie müssen diese Jobs löschen oder neu zuweisen, bevor die Anmeldung gelöscht werden kann. (Microsoft SQL Server, Fehler: 15170)

Wie lösche ich die Anmeldung, wenn Jobs (gemäß der obigen Meldung) im Besitz der Anmeldung sind?

Grüße, Nirvan.


quelle
Sie müssen zuerst den Eigentümer des Jobs ändern oder den Job löschen, bevor Sie die Anmeldung löschen können.
Adam Wenger

Antworten:

13

Wenn Sie viele Jobs haben und nicht wissen, welcher Job diesem Login gehört, werden Sie in dieser Abfrage über den Namen der Jobs informiert, deren Eigentümer sie sind:

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'

Sobald Sie den Job gefunden haben, können Sie ihn löschen mit sp_delete_job:: (Von MSDN)

EXEC msdb.dbo.sp_delete_job
    @job_name = N'JobToDelete';
Adam Wenger
quelle
Ich sehe den Job jetzt mit Ihrer Anfrage. Dies war der Job, den Asp.Net für die Verwaltung seiner Sitzungen erstellt hat. Ich habe bereits die Datenbank gelöscht, die von ASP.net zum Verwalten von Sitzungen verwendet wurde. Jetzt möchte ich diesen Job löschen. Leider verwende ich eine Express-Version von Management Studio und der SQLServer-Agent ist im Objekt-Explorer nicht aufgeführt. Irgendwelche Ratschläge, wie ich den Job löschen soll?
1
Ich habe meine Antwort aktualisiert, um anzugeben, wie ein Job gelöscht wird.
Adam Wenger
Vielen Dank Adam. Job gelöscht und erfolgreich angemeldet.
Kein Problem, ich bin froh, dass ich helfen konnte.
Adam Wenger
2

Sie müssen den Eigentümer der Jobs auf eine andere Anmeldung einstellen. Wenn Sie sich die Eigenschaften der Jobs ansehen, werden Sie sehen, wer der Eigentümer für sie ist. Alles was Sie tun müssen, ist das in ein anderes Login zu ändern.

Hier ist das T-SQL, um den Eigentümer des Jobs zu ändern:

use msdb
go

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

Was die Datenbankbenutzer betrifft, die dem Login zugeordnet sind, das Sie löschen möchten, wenn Sie die Datenbankbenutzer und ihren Sicherheitskontext beibehalten möchten, tun Sie Folgendes:

alter user YourDbUser 
with login = TheLoginThatYouWantTheUserToBeMappedTo
Thomas Stringer
quelle
+1 für Hilfe bei der Neuzuordnung von Benutzern und allgemein gute Antwort. Gute Arbeit Shark, wie immer scheint es :)
Adam Wenger
@ AdamWenger danke! Ich mag Ihre Anfrage mit dem Finden der Jobs, die ein Login besitzt. +1 dafür!
Thomas Stringer