Question

Je sais que ce qui est presque un double de: L'erreur "Échec de la connexion pour l'utilisateur 'NT AUTHORITY \ IUSR" dans ASP.NET et SQL server 2008 et Échec de la connexion pour l'utilisateur 'nom d'utilisateur' - System.Data.SqlClient.SqlException avec LINQ en externe bibliothèque projet / classe mais certaines choses ne correspond pas par rapport aux autres sur mon serveur appliations et je ne sais pas pourquoi.

Boîtes utilisés:

Box Web
SQL Box
Boîte de test SQL

Ma demande:

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é dans la bibliothèque de classe. Comme par Échec de la connexion pour l'utilisateur « nom d'utilisateur '- System.Data.SqlClient.SqlException avec LINQ dans la bibliothèque 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 si (dans les applications Web et 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é que le travail via l'ajouter au serveur Explorer. Ceci est la chaîne de connexion mon fichier .dbml utilise.

Le problème:

Je reçois l'erreur suivante:

System.Data.SqlClient.SqlException: Login failed for user 'DOMAIN\MACHINENAME$'.

Maintenant, ce faisant référence l'erreur « échec de la connexion pour l'utilisateur 'NT AUTHORITY \ IUSR » dans ASP.NET et SQL Server 2008 il est dit que le service est vraiment de réseau local et en utilisant un autre nom non domaine ne travail.

Mais je suis confus parce que je l'ai vérifié à la fois SQL et boîte de test SQL SQL Management Studio et les deux ont NT AUTHORITY/NETWORK SERVICE sous Sécurité -> Logins, au niveau de la base de données, qui ne figure pas dans la section Sécurité -> Utilisateurs, mais le niveau de base de données de 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 le plein contrôle.

La raison pour laquelle je suis confus parce que j'ai beaucoup d'autres applications web sur mon serveur Web, que les bases de données de référence sur les deux boîte SQL et la boîte de test SQL, et ils travaillent tous. Mais je ne peux pas trouver une différence entre eux et mon application en cours, autre que ce que je suis en utilisant une bibliothèque de classes. Est-ce que la matière? Vérification des autorisations NTFS, la configuration des logins de sécurité au niveau du serveur et les bases de données, chaîne de connexion et le mode de connexion (informations d'identification SQL Server) et pool d'applications IIS et d'autres options de dossier, sont tous les mêmes.

Pourquoi ces applications fonctionnent sans ajouter $ machinename aux autorisations de l'une de mes boîtes SQL? Mais c'est-ce que le seul lien me dit de faire pour résoudre ce problème.

Était-ce utile?

La solution

SERVICE DE RÉSEAU et LocalSystem va s'authentifier toujours que le compte correpsonding (service builtin \ réseau et builtin \ system) au niveau local, mais les deux authentifiera que la machine à distance compte.

Si vous voyez un échec comme Login failed for user 'DOMAIN\MACHINENAME$' cela signifie qu'un processus en cours d'exécution en tant que service RÉSEAU ou LocalSystem a accédé à une ressource distante, elle-même a authentifié comme le compte de la machine et l'autorisation a été refusée.

Un exemple typique serait une application ASP en cours d'exécution dans un pool d'application configuré pour utiliser des titres de compétence NETWORK SERVICE et la connexion à un serveur SQL distant: le pool d'application authentifiera comme la machine exécute le pool d'application, et ce compte de la machine qui doit être accordé l'accès.

Lorsque l'accès est refusé à un compte de la machine, l'accès doit être accordé au compte de la machine. Si le serveur refuse de se connecter « DOMAIN \ MACHINE $ », vous devez accorder des droits de connexion à « DOMAIN \ MACHINE $ » ne pas SERVICE RESEAU. L'octroi de l'accès au service de réseau permettrait locale processus en cours d'exécution en tant que SERVICE réseau pour se connecter, pas une région éloignée, celle à distance authentifiera que, vous l'aurez deviné, DOMAIN \ MACHINE $.

Si vous attendez l'application asp pour se connecter à SQL Server distant en tant que connexion SQL et vous obtenez des exceptions sur DOMAIN \ MACHINE $, cela signifie que vous utilisez la sécurité intégrée dans la chaîne de connexion. Si cela est inattendu, cela signifie que vous déconné les chaînes de connexion que vous utilisez.

Autres conseils

Cette erreur se produit lorsque vous avez configuré votre application avec IIS et IIS va à SQL Server et tente de se connecter avec les informations d'identification qui ne disposent pas des autorisations appropriées. Cette erreur peut également se produire lorsque la réplication est réglé ou mirroring vers le haut.  Je vais aller sur une solution qui fonctionne toujours et est très simple. Aller à SQL Server >> Sécurité >> Logins et clic droit sur NT AUTHORITY \ NETWORK SERVICE et sélectionnez Propriétés

Dans l'écran récemment ouvert des Propriétés de la connexion, accédez à l'onglet « User Mapping ». Ensuite, dans l'onglet, sélectionnez la base de données désirée « User Mapping » - en particulier la base de données pour laquelle ce message d'erreur est affiché. Sur l'écran inférieur, vérifiez le db_owner rôle. Cliquez sur OK.

Dans mon cas, j'avais Identity="ApplicationPoolIdentity" pour mon pool d'applications IIS.

Après avoir ajouté l'utilisateur IIS APPPOOL\ApplicationName à SQL Server cela fonctionne.

Un collègue a eu la même erreur et il est dû à une petite erreur de configuration dans IIS.
La mauvaise application Piscine a été affectée à l'application Web.

En effet, nous utilisons une mesure du pool d'applications avec une identité spécifique pour répondre à nos besoins.

Dans son directeur IIS local -> Sites -> Site Web par défaut -> Notre nom Web App -> Paramètres de base ... L'application La piscine était "DefaultAppPool" au lieu de notre pool d'applications sur mesure.

Réglage du pool d'application correcte a résolu le problème.

L'astuce qui a fonctionné pour moi était d'enlever Integrated Security de ma chaîne de connexion et ajouter une User ID=userName; Password=password régulière de votre chaîne de connexion dans le App.config de votre libruary pourrait pas utiliser la sécurité intégrée, mais celui créé en Web.config est!

J'ai ajouté <identity impersonate="true" /> à mon web.config et il a bien fonctionné.

En fait pour résoudre ce que nous devons avoir un peu mis en place comme

  • Web App Fonctionnant sous ApplicationPoolIdentity
  • Application Web se connecter à des bases de données par le biais ADO.Net utilisant l'authentification Windows dans la chaîne de connexion

La chaîne de connexion utilisée avec l'authentification Windows comprennent soit Trusted_Connection=Yesattribute ou l'Integrated Security=SSPI d'attribut équivalent dans le fichier Web.config

Ma connexion de base de données est en mode d'authentification Windows. Donc, je résolus en changeant simplement les Pools d'applications Identité de ApplicationPoolIdentity à mon journal de domaine dans les informations d'identification DomainName \ MyloginId

Étape:

  1. Cliquez sur Pools d'applications
  2. Sélectionner le nom de votre application

  3. Aller à Paramètres avancés

  4. Agrandir Modèle de processus et cliquez sur Identité . Cliquez sur trois point sur l'extrémité droite.
  5. Cliquez sur Set ... et fournir votre journal de domaine dans les informations d'identification

Pour moi, il a été résolu.

Remarque: Dans la production ou de l'environnement, vous pourriez avoir un compte de service en même domaine pour l'identité du pool d'applications. Dans ce cas, utiliser le compte de service au lieu de votre connexion.

Pour moi, le problème a été résolu lorsque je l'ai remplacé la valeur par défaut intégré compte « ApplicationPoolIdentity » avec un compte de réseau qui a été autorisé à accéder à la base de données.

paramètres peuvent être définis dans Internet Information Server (IIS 7+)> Pools d'applications> Advanded Paramètres> Modèle de processus> Identité

Pour moi problème avec 'DOMAIN \ MACHINENAME $' fixe en réglant l'identité de DefaultApplicationPool à NetworkService.

Nous avions recevons des messages d'erreur similaires lors du traitement une base de données Analysis Services. Il est avéré que le nom d'utilisateur, qui a été utilisé pour exécuter l'instance Analysis Services, n'a pas été ajouté à Logins de sécurité de SQL Server.

Dans SQL Server 2012, les services SQL Server et d'analyse sont configurés pour fonctionner en tant que différents utilisateurs par défaut. Si vous avez passé avec les paramètres par défaut, assurez-vous toujours que l'utilisateur AS a accès à votre source de données!

Vérifiez si vous avez

User Instance=true

dans la chaîne de connexion. Essayez de le supprimer qui résoudra votre problème.

J'ai aussi eu cette erreur avec un utilisateur authentifié SQL Server

J'ai essayé quelques-uns des correctifs, mais ils ne fonctionnent pas.

La solution dans mon cas était de configurer son "mode d'authentification serveur" pour permettre l'authentification SQL Server, sous Management Studio:. Propriétés / Sécurité

Le seul point que tout le monde semble avoir oublié est que vous pouvez sécurité intégrée = true. Vous pouvez avoir le site en cours d'exécution sous un compte de la piscine. C'est tout beau et donc il est toujours possible de frapper le serveur SQL avec les informations d'identification d'utilisateur d'origine et non de la piscine. Il appelle la délégation contrainte. Si vous l'activez et mettre en place une fenêtre SPN se traduira par des demandes allant au service final de pouvoirs de la piscine avec l'utilisateur (SQL est juste un tel service). Vous devez vous enregistrer le seul et unique serveur SQL services requêtes SQL sur le serveur Web. La définition de cette tout est trop pour moi d'essayer de décrire avec précision ici. Il m'a fallu un certain temps pour travailler à travers moi-même.

J'ai passé quelques heures à essayer de résoudre le problème et je l'ai finalement obtenu - le navigateur SQL Server a été « arrêté ». La solution est de changer en mode « Automatique »:

  

Si elle est désactivée, allez à Panneau de configuration> Administration   Outils-> Services et recherchez l'Agent SQL Server. Faites un clic droit et   sélectionnez « Propriétés ». Dans le menu déroulant « Type de démarrage », changement de   "Désactivé" à "automatique".

citation d'ici

J'ai eu la même question plus tôt, la suppression Persist Security Info=True de connectionString travaillé pour moi.

Je suis tombé sur ce problème lorsqu'un client renommé un serveur SQL. Le service SQL Reporting a été configuré pour se connecter à l'ancien nom du serveur, qu'ils avaient également créé un alias pour que redirigé vers l'adresse IP du nom du nouveau serveur.

Toutes leurs anciennes applications IIS travaillaient, redirection vers le nouveau nom du serveur via l'alias. Sur un pressentiment, j'ai vérifié si elles étaient en cours d'exécution SSRS. Toute tentative de se connecter au site SSRS l'erreur n'a donné:

"Le service est available.Contact pas votre administrateur système pour résoudre le problème des administrateurs système:... Le serveur de rapports ne peut pas se connecter à sa base de données Assurez-vous que la base de données est en cours d'exécution et accessible Vous pouvez également consulter la trace serveur de rapports journal pour plus de détails. «

Il est en cours d'exécution sur le serveur, mais à défaut de se connecter car il utilisait l'alias pour l'ancien nom du serveur. Reconfiguration SSRS pour utiliser le nouveau nom du serveur au lieu de l'ancien / alias fixe il.

  1. Modifier le pool d'applications Identité du système local
  2. Sur SQL Gestion> Sécurité> Logins
    1. Rechercher NT AUTHORITY \ SYSTEM double-cliquez sur
    2. Mappages utilisateur> Vérifiez votre base de données et lui donner un rôle ci-dessous.
    3. Rappelez-vous aussi de créer les connexions de sécurité de la base de données d'utilisateur o avec un mot de passe.

Je suis cette erreur en essayant de tester une solution en utilisant les éléments suivants

string cn = "Data Source=[servername];Integrated Security=true;Initial Catalog=[dbname];";

La façon dont j'était résolu. Je devais ouvrir Visual Studio et l'exécuter sous un autre compte, parce que le compte que j'utilisais pour ouvrir était pas mon compte Admin

Donc, si votre problème est semblable à la mienne: épingler le VS à la barre des tâches, puis utilisez Maj et clic droit pour ouvrir le menu afin que vous puissiez ouvrir VS comme un autre utilisateur. entrer la description d'image ici

Appreciate il y a quelques bonnes réponses ici, mais comme je viens de perdre du temps de travail ceci, nous espérons que cela peut aider quelqu'un.

Dans mon cas, tout avait fonctionné très bien, puis arrêté sans raison apparente avec l'erreur indiqué dans la question.

IIS a été exécuté en tant que service de réseau et de service réseau a été mis en place sur SQL Server précédemment (voir d'autres réponses à ce poste). Les rôles de serveur et les correspondances d'utilisateurs avaient l'air correct.

La question était; pour absolument aucune raison apparente; Service réseau a commuté sur «deny droits connexion dans la base de données.

Pour résoudre:

  1. Ouvrir SSMS> Sécurité> Logins.
  2. clic droit 'NT AUTHORITY \ NETWORK SERVICE' et cliquez sur Propriétés.
  3. Allez à l'onglet 'Status' et mettre Permission to Connect To Database Engine à Grant.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top