L'erreur "Login échoué pour l'utilisateur 'NT autoritéIUSR' " dans ASP.NET et SQL Server 2008

My ASP.NET v3.5 application web lance l'exception suivante quand il tente d'ouvrir une connexion à une base de données SQL Server 2008:

Système

.Données.SqlClient.SqlException: Ne peut pas ouvrir la base de données "MyDbName" demandée par la connexion. Connexion échouer. Échec de connexion pour l'utilisateur ' NT AUTHORITYIUSR'.

le truc c'est que j'ai ajouté NT AUTHORITYIUSR à la liste des logins du serveur, et à la base de données liste des utilisateurs. Pour le serveur, j'ai accordé à l'utilisateur le rôle Public, et pour la base de données j'ai accordé les permissions db_datareader .

j'ai également accordé la même chose pour NT AUTHORITYNETWORK SERVICE , qui est l'identité sous laquelle le pool de demandes est exécuté.

l'application web est hébergée par IIS7, si cela fait une différence. Le problème se résorbe lorsque le DB et L'IIS sont sur la même machine physique aussi bien.

15
demandé sur Justin R. 2009-08-13 06:16:48

7 réponses

le truc ici est que NT AUTHORITY\NETWORK SERVICE apparaît réellement dans la base de données comme DOMAINNAME\MACHINENAME$ (notez le signe $ !). C'est-à-dire que lorsque vous passez la frontière de la machine de votre serveur web au serveur SQL, le serveur SQL voit le compte de la machine si vous utilisez les comptes NETWORK SERVICE ou LOCAL SYSTEM . Si vous utilisez un autre compte non-domaine, SQL Server ne recevra pas vos informations d'identification.

je suis un peu perplexe par votre message d'erreur. Pour dire la vérité, je ne pense pas que quand le DB est sur une autre boîte, vous verrez autre chose que Login Failed for NT AUTHORITY\ANONYMOUS LOGON .

IUSR est utilisé pour les sites web anonymes, et ne peut pas passer le fil à SQL Server. Tu peux trouver un moyen pour que ça marche si tu fais tout sur la même machine, mais je ne le saurais jamais parce que je ne le ferais jamais de cette façon... ;- )

6
répondu Dave Markle 2014-05-17 12:46:05

je suggère de créer un compte séparé (de préférence un domaine) et de le spécifier dans la chaîne de connexion (habituellement dans le web.config) Ensuite, vous pouvez limiter les permissions sur le serveur web ce que ce compte peut et ne peut pas faire. Ensuite, vous pouvez accorder à ce compte les permissions requises dans SQL server.

1
répondu DmitryK 2009-08-13 07:27:58

j'avais eu le même problème et j'ai résolu cela en changeant le pool d'application.

1
répondu Roman Ostashevskyi 2014-04-16 07:40:35

au cas où il aide quelqu'un, sur le web.config j'ai ajouté pour que cette erreur disparaisse (sous )

1
répondu Smyrnian 2015-01-06 05:33:02

au lieu d'utiliser Integrated Security=True; dans la chaîne de connexion, il suffit d'utiliser l'authentification du nom d'utilisateur et du mot de passe user=sa; pwd=mypassword;

0
répondu 2015-07-22 08:00:30

la solution simple est de vérifier votre web.le fichier de configuration et assurez-vous que l'un de ces fait partie de la db de la chaîne de connexion:

Connexion de Confiance=false

ou

Integrated Security=True

-1
répondu Samnan 2011-10-18 06:26:35

ce problème s'affiche lorsque vous restaurez une nouvelle base de données sur votre dernière base de données.

pour résoudre cela, vous devez aller à sqlserver, puis la sécurité et puis régler votre apppool à nouveau.

-2
répondu mahmoud 2014-05-17 12:48:50