Impossible de supprimer la connexion SQL Server 2008 R2

8

J'avais créé une connexion SQL Server il y a quelques jours. Maintenant, je dois supprimer le même. Je suis donc allé dans SQL Server Management Studio => Sécurité => Connexions et j'ai sélectionné la connexion que je veux supprimer. Il affiche un message d'information qui dit

La suppression des connexions au serveur ne supprime pas les utilisateurs de base de données associés aux connexions. Pour terminer le processus, supprimez les utilisateurs de chaque base de données. Il peut être nécessaire de transférer d'abord la propriété des schémas à de nouveaux utilisateurs.

Ignorant ce message, lorsque je confirme le processus de suppression, j'obtiens une erreur fatale qui indique

Échec de la connexion pour la connexion «iis_login». (Microsoft.SqlServer.Smo)

Une exception s'est produite lors de l'exécution d'une instruction ou d'un lot Transact-SQL. (Microsoft.SqlServer.ConnectionInfo)

Cette connexion est propriétaire de 1 offre (s). Vous devez supprimer ou réaffecter ces travaux avant de supprimer la connexion. (Microsoft SQL Server, erreur: 15170)

Comment supprimer la connexion lorsque des tâches (selon le message ci-dessus) appartiennent à la connexion.

Cordialement, Nirvan.


la source
Vous devrez d'abord changer la propriété du travail ou supprimer le travail avant de pouvoir supprimer la connexion.
Adam Wenger

Réponses:

13

Si vous avez plusieurs travaux et ne savez pas quel travail appartient à cette connexion, cette requête vous indiquera le nom des travaux qui leur appartiennent:

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'

Une fois que vous avez trouvé le travail, vous pouvez le supprimer en utilisant sp_delete_job:: (à partir de MSDN)

EXEC msdb.dbo.sp_delete_job
    @job_name = N'JobToDelete';
Adam Wenger
la source
Je vois le Job maintenant avec votre requête. C'est le travail qu'Asp.Net a créé pour gérer ses sessions. J'ai déjà supprimé la base de données utilisée par ASP.net pour gérer les sessions. Alors maintenant, je voudrais supprimer ce travail. Malheureusement, j'exécute une version Express de Management Studio et l'agent SQLServer n'est pas répertorié dans l'Explorateur d'objets. Des conseils sur la façon de supprimer le travail?
1
J'ai mis à jour ma réponse pour indiquer comment supprimer un travail.
Adam Wenger
Merci beaucoup Adam. Suppression du travail et connexion réussie.
Pas de problème, content d'avoir pu aider.
Adam Wenger
2

Vous devez définir le propriétaire des travaux sur une connexion différente. Si vous regardez les propriétés des emplois, vous verrez qui est le propriétaire pour eux. Tout ce que vous avez à faire est de changer cela en une autre connexion.

Voici le T-SQL pour changer le propriétaire du travail:

use msdb
go

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

En ce qui concerne les utilisateurs de base de données qui sont mappés à la connexion que vous essayez de supprimer, si vous souhaitez conserver les utilisateurs de base de données et leur contexte de sécurité, faites-le simplement pour eux:

alter user YourDbUser 
with login = TheLoginThatYouWantTheUserToBeMappedTo
Thomas Stringer
la source
+1 pour obtenir de l'aide sur le remappage des utilisateurs et une bonne réponse générale. Beau travail Shark, comme d'habitude, il semble :)
Adam Wenger
@AdamWenger merci! J'aime votre requête pour trouver les emplois que possède un identifiant. +1 pour ça!
Thomas Stringer