Je sais que c'est presque un double de: L'erreur «La connexion a échoué pour l'utilisateur 'NT AUTHORITY \ IUSR'» dans ASP.NET et SQL Server 2008 et la connexion a échoué pour l'utilisateur 'username' - System.Data.SqlClient.SqlException avec LINQ dans bibliothèque de projet / classe externe, mais certaines choses ne s'additionnent pas par rapport à d'autres applications sur mon serveur et je ne sais pas pourquoi.
Boîtes utilisées:
Boîte de
test SQL Web Box
SQL
Box
Mon application:
J'ai une application Web ASP.NET, qui fait référence à une bibliothèque de classes qui utilise LINQ-to-SQL. Chaîne de connexion correctement configurée dans la bibliothèque de classes. Comme par Échec de la connexion pour l'utilisateur 'nom d'utilisateur' - System.Data.SqlClient.SqlException avec LINQ dans la bibliothèque de projet / classe externe, j'ai également ajouté cette chaîne de connexion à l'application Web.
La chaîne de connexion utilise les informations d'identification SQL comme telles (dans l'application Web et la bibliothèque de classes):
<add name="Namespace.My.MySettings.ConnectionStringProduction"
connectionString="Data Source=(SQL Test Box);Initial Catalog=(db name);Persist Security Info=True;User ID=ID;Password=Password"
providerName="System.Data.SqlClient" />
Cette connexion a confirmé son fonctionnement en l'ajoutant à l'Explorateur de serveurs. Il s'agit de la chaîne de connexion que mon fichier .dbml utilise.
Le problème:
J'obtiens l'erreur suivante:
System.Data.SqlClient.SqlException: Login failed for user 'DOMAIN\MACHINENAME$'.
Maintenant en faisant référence à cela L'erreur «Échec de la connexion pour l'utilisateur 'NT AUTHORITY \ IUSR'» dans ASP.NET et SQL Server 2008 indique que c'est vraiment le service de réseau local et que l'utilisation de tout autre nom non-domaine ne fonctionnera pas.
Mais je suis confus car j'ai vérifié à la fois SQL Box et SQL Test Box SQL Management Studio et les deux ont NT AUTHORITY/NETWORK SERVICE
sous Sécurité -> Connexions, au niveau de la base de données, ce qui n'est pas répertorié sous Sécurité -> Utilisateurs, mais au niveau de la base de données Sécurité -> Utilisateurs J'ai l'utilisateur affiché dans la chaîne de connexion.
Au niveau NTFS sur le serveur Web, les autorisations ont NETWORK SERVICE a un contrôle total.
La raison pour laquelle je suis confus est que j'ai de nombreuses autres applications Web sur mon serveur Web, qui référencent des bases de données sur SQL Box et SQL Test Box, et elles fonctionnent toutes. Mais je ne trouve pas de différence entre eux et mon application actuelle, à part que j'utilise une bibliothèque de classes. Cela importera-t-il? La vérification des autorisations NTFS, la configuration des connexions de sécurité au niveau du serveur et des bases de données, la chaîne de connexion et la méthode de connexion (informations d'identification SQL Server), le pool d'applications IIS et d'autres options de dossier sont identiques.
Pourquoi ces applications fonctionnent-elles sans ajouter le nom de machine $ aux permissions de l'une ou l'autre de mes boîtes SQL? Mais c'est ce que le seul lien me dit de faire pour résoudre ce problème.