web-dev-qa-db-fra.com

Erreur de connexion SQL Server: la connexion a échoué pour l'utilisateur 'NT AUTHORITY \ SYSTEM'

J'ai créé un pool d'applications appelé "schoolPool" et je l'ai affecté à mon application Web. L'identité de ce pool a été définie sur LocalSystem. Lorsque j'essaie d'accéder à ma base de données depuis l'application, c'est-à-dire d'ouvrir une connexion SQL, le message d'erreur suivant s'affiche tout le temps:

Login failed for user 'NT AUTHORITY\SYSTEM'


J'ai essayé d'ajouter NT AUTHORITY/SYSTEM aux connexions SSMS (SQL Server Management Studio), mais il s'agissait déjà d'un principal, affichant l'erreur suivante:
enter image description here

30
codezombie

J'ai beaucoup modifié les paramètres de l'application, en modifiant l'identité du pool d'applications (dans les services Internet (IIS) de Windows 8.1) en LocalSystem, LocalService, NetworkService et ApplicationPoolIdentity. Cependant, tous n'ont pas résolu le problème de connexion à ma base de données.
Finalement J'ai défini l'identité du pool sur LocalSystem et je me suis demandé pourquoi il empêcherait "NT AUTHRITY\SYSTEM" d'ouvrir une connexion à ma base de données. J'ai ouvert SQL Server Management Studio en tant qu '"Administrateur" et vérifié la Rôles de serveur pour NT AUTHORITY\SYSTEM sous la section "connexions". Le rôle de serveur par défaut pour cet utilisateur était public par défaut. J'ai aussi vérifié sysadmin et rafraîchi mon formulaire de demande Web. Cette fois ça a marché! Tout fonctionne parfaitement maintenant.

42
codezombie

Autorisez NT AUTHORITY/SYSTEM sur le rôle de serveur en tant qu'administrateur système. enter image description here

enter image description here

89
Musakkhir Sayyed

Réexécutez la requête suivante qui affectera 'NT SERVICE\MSSQLSERVER' à l'administrateur système.

EXEC master..sp_addsrvrolemember @loginame = N'NT SERVICE\MSSQLSERVER', @rolename = N'sysadmin'
3
arnav

La réponse de Musakkhir consistant à accorder un administrateur système semble mal pensée en ce qui concerne la sécurité, et la réponse de Pinal impliquait de donner au processus inconnu les droits du propriétaire, encore presque certainement excessif. Je l'ai "résolu" moi-même en accordant simplement des droits "publics", qui n'autorisent normalement que CONNECT, mais rien d'autre, même SELECT. Si se débarrasse de l'erreur de connexion et arrête d'inonder le journal des erreurs, car il se connecte maintenant, mais quel que soit le processus inconnu, la connexion ne peut toujours rien faire.

2
Wayne