it-swarm.com.de

Anmeldung für Benutzer "DOMAIN\MACHINENAME $" fehlgeschlagen

Ich weiß, das ist fast ein Duplikat von: Der Fehler "Anmeldung für Benutzer" NT AUTHORITY\IUSR "ist fehlgeschlagen" in ASP.NET und SQL Server 2008 und Anmeldung für Benutzer "Benutzername" - System.Data.SqlClient fehlgeschlagen .SqlException mit LINQ in externer Projekt Klassenbibliothek -/aber im Vergleich zu anderen Anwendungen auf meinem Server zählen einige Dinge nicht und ich bin nicht sicher, warum.

Verwendete Boxen:

Web Box
SQL Box
SQL-Testbox

Meine Bewerbung:

Ich habe eine aASP.NET-Webanwendung, die auf eine Klassenbibliothek verweist, die LINQ-to-SQL verwendet. Verbindungszeichenfolge ordnungsgemäß in der Klassenbibliothek eingerichtet. Laut Anmeldung für Benutzer 'Benutzername' fehlgeschlagen - System.Data.SqlClient.SqlException mit LINQ in externer Projekt Klassenbibliothek -/Ich habe diese Verbindungszeichenfolge der Webanwendung hinzugefügt. 

Die Verbindungszeichenfolge verwendet SQL-Berechtigungsnachweise (in Web-App und Klassenbibliothek):

 <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" />

Diese Verbindung wurde durch Hinzufügen zum Server-Explorer als funktionsfähig bestätigt. Dies ist die Verbindungszeichenfolge, die meine .dbml-Datei verwendet.

Das Problem:

Ich erhalte folgende Fehlermeldung:

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

Nun wird darauf verwiesen Der Fehler "Anmeldung für Benutzer 'NT AUTHORITY\IUSR' 'in ASP.NET und SQL Server 2008 ist fehlgeschlagen es heißt, dass dies wirklich der lokale Netzwerkdienst ist und die Verwendung eines anderen Nicht-Domänennamens nicht möglich ist. 

Aber ich bin verwirrt, weil ich sowohl SQL Box als auch SQL Test Box SQL Management Studio überprüft habe und beide NT AUTHORITY/NETWORK SERVICE unter Sicherheit -> Anmeldungen auf Datenbankebene haben, die nicht unter Sicherheit -> Benutzer, sondern auf Datenbankebene aufgeführt ist Sicherheit -> Benutzer Ich habe den Benutzer in der Verbindungszeichenfolge angezeigt.

Auf der NTFS-Ebene auf dem Webserver verfügen die Berechtigungen über NETWORK SERVICE.

Ich bin verwirrt, weil ich viele andere Webanwendungen auf meinem Webserver habe, die auf Datenbanken sowohl auf SQL Box als auch auf SQL Test Box verweisen und alle funktionieren. Ich kann jedoch keinen Unterschied zwischen ihnen und meiner aktuellen Anwendung feststellen, es sei denn, ich verwende eine Klassenbibliothek. Wird das wichtig sein? Die Überprüfung der NTFS-Berechtigungen, das Einrichten von Sicherheitsanmeldungen auf Server- und Datenbankebene, die Verbindungszeichenfolge und die Verbindungsmethode (SQL Server-Berechtigungsnachweise) sowie der Anwendungspool IIS und andere Ordneroptionen sind identisch.

Warum funktionieren diese Anwendungen, ohne den Berechtigungsnamen eines meiner SQL-Felder hinzuzufügen? Aber genau das sagt mir der Link, um dieses Problem zu beheben.

100
SventoryMang

NETWORK SERVICE und LocalSystem authentifizieren sich immer lokal als das entsprechende Konto (eingebauter\Netzwerkdienst und eingebautes\System), beide jedoch authentifizieren sich als Remote-Konto des Computerkontos.

Wenn Sie einen Fehler wie Login failed for user 'DOMAIN\MACHINENAME$' sehen, bedeutet dies, dass ein Prozess, der als NETWORK SERVICE oder LocalSystem ausgeführt wird, auf eine Remote-Ressource zugegriffen hat, sich als Computerkonto authentifiziert hat und die Berechtigung verweigert wurde.

Ein typisches Beispiel wäre eine ASP -Anwendung, die in einem App-Pool ausgeführt wird, der zur Verwendung von NETWORK SERVICE-Anmeldeinformationen und zum Herstellen einer Verbindung mit einem Remote-SQL-Server konfiguriert ist: Der App-Pool authentifiziert sich als machine, auf dem der App-Pool ausgeführt wird Computerkonto, dem Zugriff gewährt werden muss.

Wenn der Zugriff auf ein Computerkonto verweigert wird, muss der Zugriff auf das Computerkonto gewährt werden. Wenn der Server sich nicht bei "DOMAIN\MACHINE $" anmelden möchte, müssen Sie "DOMAIN\MACHINE $" Anmelderechte erteilen, nicht NETWORK SERVICE. Wenn Sie Zugriff auf den NETWORK SERVICE gewähren, kann ein local - Prozess, der als NETWORK SERVICE ausgeführt wird, eine Verbindung hergestellt werden, nicht ein Remote-Prozess, da der Remote-Prozess sich als DOMAIN\MACHINE $ authentifiziert.

Wenn Sie davon ausgehen, dass die asp-Anwendung als SQL-Login eine Verbindung zum Remote-SQL-Server herstellt und Sie DOMAIN\MACHINE $ -Exceptions erhalten, bedeutet dies, dass Sie Integrated Security in der Verbindungszeichenfolge verwenden. Wenn dies unerwartet ist, bedeutet dies, dass Sie die verwendeten Verbindungszeichenfolgen vermasselt haben.

136
Remus Rusanu

Dieser Fehler tritt auf, wenn Sie Ihre Anwendung mit IIS konfiguriert haben und IIS zu SQL Server geht und versucht, sich mit Anmeldeinformationen anzumelden, die nicht über die erforderlichen Berechtigungen verfügen. Dieser Fehler kann auch auftreten, wenn Replikation oder Spiegelung eingerichtet ist. Ich werde eine Lösung besprechen, die immer funktioniert und sehr einfach ist ... Gehen Sie zu SQL Server >> Sicherheit >> Anmeldungen und klicken Sie mit der rechten Maustaste auf NT AUTHORITY\NETWORK SERVICE, und wählen Sie Eigenschaften

Wechseln Sie auf einem neu geöffneten Bildschirm mit den Anmeldeeigenschaften zur Registerkarte "Benutzerzuordnung". Wählen Sie dann auf der Registerkarte "Benutzerzuordnung" die gewünschte Datenbank aus - insbesondere die Datenbank, für die diese Fehlermeldung angezeigt wird. Überprüfen Sie auf dem unteren Bildschirm die Rolle db_owner. OK klicken.

24
Zain Ali

In meinem Fall hatte ich Identity="ApplicationPoolIdentity" für meinen IIS - Anwendungspool.

Nachdem ich IIS APPPOOL\ApplicationName user zu SQL Server hinzugefügt habe, funktioniert es. 

12
nZeus

Der Trick, der für mich funktionierte, bestand darin, Integrated Security aus meiner Verbindungszeichenfolge zu entfernen und eine reguläre User ID=userName; Password=password-Verbindungszeichenfolge in App.config Ihrer Bibliothek hinzuzufügen, die möglicherweise nicht die integrierte Sicherheit verwendet, sondern die in Web.config erstellte.

11
winy101

Ein Kollege hatte den gleichen Fehler und dieser Fehler war auf einen kleinen Konfigurationsfehler in IIS zurückzuführen.
.__ Der falsche Anwendungspool wurde für die Webanwendung zugewiesen.

Tatsächlich verwenden wir einen benutzerdefinierten Anwendungspool mit einer bestimmten Identität, um unsere Anforderungen zu erfüllen.

In seinem lokalen IIS Manager -> Sites -> Standardwebsite -> Unser Web-App-Name -> Grundeinstellungen ....__ Der Anwendungspool war "DefaultAppPool" anstelle unseres benutzerdefinierten Anwendungspools.

Durch Einstellen des richtigen Anwendungspools wurde das Problem behoben.

11
Julien P

Ich habe <identity impersonate="true" /> zu meiner web.config hinzugefügt und es hat gut funktioniert.

10
simonm

Um dies zu lösen, müssen wir einiges wie

  • Web-App, die unter ApplicationPoolIdentity ausgeführt wird
  • Webanwendung, die mithilfe von Windows-Authentifizierung in der Verbindungszeichenfolge über ADO.Net eine Verbindung zu Datenbanken herstellt

Die bei der Windows-Authentifizierung verwendete Verbindungszeichenfolge enthält entweder Trusted_Connection=Yesattribute oder das entsprechende Attribut Integrated Security=SSPI in der Web.config-Datei

Meine Datenbankverbindung befindet sich im Windows-Authentifizierungsmodus. Also habe ich es gelöst, indem ich einfach die Application Pools Identity von ApplicationPoolIdentity in meine Anmeldedaten für meine Domäne geändert habe DomainName\MyloginId

Schritt:

  1. Klicken Sie auf Anwendungspools.
  2. Wählen Sie den Namen Ihrer Anwendung

  3. Gehe zu Erweiterte Einstellung

  4. Erweitern Sie Process Model und klicken Sie auf Identity. Klicken Sie am rechten Ende auf dreidot.
  5. Klicken Sie auf die Schaltfläche Set ... und geben Sie Ihre Domänenanmeldeinformationen ein

Für mich wurde es gelöst.

Hinweis: In der Produktions- oder IT-Umgebung haben Sie möglicherweise ein Dienstkonto in derselben Domäne für die Identität des App-Pools. Verwenden Sie in diesem Fall das Dienstkonto anstelle Ihres Login. 

8
Raj Baral

Für mich war das Problem behoben, als ich das standardmäßige integrierte Konto 'ApplicationPoolIdentity' durch ein Netzwerkkonto ersetzt hatte, das Zugriff auf die Datenbank hatte.

Einstellungen können in Internet Information Server (IIS 7+)> Anwendungspools> Erweiterte Einstellungen> Prozessmodell> Identität vorgenommen werden

5
Remco

Bei der Verarbeitung einer Analysis Services-Datenbank wurden ähnliche Fehlermeldungen angezeigt. Es stellte sich heraus, dass der Benutzername, der zum Ausführen der Analysis Services-Instanz verwendet wurde, nicht zu den Sicherheitsanmeldungen von SQL Server hinzugefügt wurde.

In SQL Server 2012 sind die SQL Server- und Analysis-Dienste standardmäßig so konfiguriert, dass sie als unterschiedliche Benutzer ausgeführt werden. Wenn Sie die Standardeinstellungen gewählt haben, stellen Sie immer sicher, dass der AS-Benutzer Zugriff auf Ihre Datenquelle hat!

2
Philip Atz

Der einzige Punkt, den scheinbar alle übersehen haben, ist, dass Sie integrierte Sicherheit = Wahr wünschen. Möglicherweise wird die Site unter einem Poolkonto ausgeführt. Das ist in Ordnung, und es ist immer noch möglich, den SQL-Server mit den ursprünglichen Benutzeranmeldeinformationen und nicht mit dem Pool zu erreichen. Es heißt eingeschränkte Delegation. Wenn Sie es aktivieren und einen SPN einrichten, werden die Anmeldeinformationen des Pools mit den Anforderungen des Pools übersetzt, die vom Benutzer an den endgültigen Dienst gesendet werden (SQL ist nur ein solcher Dienst). Sie müssen den EIN UND NUR SQL-Server registrieren, der SQL-Anforderungen auf dem Webserver bearbeitet. Das alles einzustellen ist zu viel für mich, um hier genau beschreiben zu können. Ich habe lange gebraucht, um es selbst durchzuarbeiten.

1
Todd Beaulieu

Ich hatte auch diesen Fehler mit einem authentifizierten SQL Server-Benutzer

Ich habe einige der Fixes ausprobiert, aber sie funktionierten nicht.

In meinem Fall war die Lösung die Konfiguration des "Serverauthentifizierungsmodus" für die SQL Server-Authentifizierung unter Management Studio: Eigenschaften/Sicherheit.

1
Arjan

Überprüfen Sie, ob Sie haben 

User Instance=true

in Verbindungszeichenfolge. Versuchen Sie es zu entfernen, um das Problem zu beheben.

1
Sarath Avanavu

Schätzen Sie, dass es hier ein paar gute Antworten gibt, aber da ich gerade die Zeit verloren habe, dies auszuarbeiten, kann dies hoffentlich jemandem helfen.

In meinem Fall hatte alles einwandfrei funktioniert und war dann ohne ersichtlichen Grund mit dem in der Frage angegebenen Fehler stehen geblieben.

IIS wurde als Netzwerkdienst ausgeführt und der Netzwerkdienst wurde zuvor auf SQL Server eingerichtet (siehe andere Antworten auf diesen Beitrag). Serverrollen und Benutzerzuordnungen sahen korrekt aus.

Das Problem war; aus absolut keinem ersichtlichen Grund; Der Netzwerkdienst hat die Anmelderechte in der Datenbank verweigert.

Reparieren:

  1. Öffnen Sie SSMS> Sicherheit> Anmeldungen.
  2. Klicken Sie mit der rechten Maustaste auf "NT AUTHORITY\NETWORK SERVICE" und klicken Sie auf "Eigenschaften".
  3. Gehen Sie zur Registerkarte 'Status' und setzen Sie Permission to Connect To Database Engine auf 'Grant'.

Network Service Allowed

0
HockeyJ
  1. Ändern Sie die App Pool Identity in Local System
  2. Auf SQL-Verwaltung> Sicherheit> Anmeldungen
    1. Doppelklicken Sie auf NT AUTHORITY\SYSTEM
    2. Benutzerzuordnungen> Überprüfen Sie Ihre Datenbank und weisen Sie ihr unten eine Rolle zu.
    3. Denken Sie auch daran, die Benutzerdatenbank für Sicherheitsanmeldungen mit einem korrekten Kennwort zu erstellen.
0
Allan Zeidler

Ich hatte das gleiche Problem zuvor, das Entfernen von Persist Security Info=True aus connectionstring funktionierte für mich.

0
msk

Ich habe ein paar Stunden damit verbracht, das Problem zu beheben, und endlich bekam ich es - der SQL Server Browser wurde "gestoppt". Um das Problem zu beheben, ändern Sie den Modus "Automatisch":

Wenn es deaktiviert ist, gehen Sie zu Systemsteuerung-> Verwaltung Tools-> Services und suchen Sie nach dem SQL Server-Agenten. Klicken Sie mit der rechten Maustaste und Wählen Sie "Eigenschaften". Ändern Sie in der Dropdown-Liste "Starttyp" von "Deaktiviert" bis "Automatisch".

Zitat von hier

0
A Petrov

Ich bin auf dieses Problem gestoßen, als ein Client einen SQL Server umbenannte. Der SQL Reporting Service wurde so konfiguriert, dass er eine Verbindung zum alten Servernamen herstellt, für den auch ein Alias ​​erstellt wurde, der auf die IP des neuen Servernamens umgeleitet wurde. 

Alle ihre alten IIS - Apps funktionierten und wurden über den Aliasnamen auf den neuen Servernamen umgeleitet. Kurz darauf prüfte ich, ob SSRS ausgeführt wurde. Beim Versuch, eine Verbindung zur SSRS-Site herzustellen, wurde der Fehler angezeigt:

"Der Dienst ist nicht verfügbar. Wenden Sie sich an Ihren Systemadministrator, um das Problem zu beheben. Systemadministratoren: Der Berichtsserver kann keine Verbindung zu seiner Datenbank herstellen. Stellen Sie sicher, dass die Datenbank ausgeführt wird und auf sie zugegriffen werden kann. Sie können auch das Berichtsserverprotokoll überprüfen für Details. "

Es wurde auf dem Server ausgeführt, konnte jedoch keine Verbindung herstellen, da der Aliasname für den alten Servernamen verwendet wurde. Durch die Neukonfiguration von SSRS für die Verwendung des neuen Servernamens anstelle des alten/Alias ​​wurde der Fehler behoben.

0
SQLMonger

Für mich wurde das Problem mit 'DOMAIN\MACHINENAME $' behoben, indem DefaultApplicationPool Identity auf NetworkService gesetzt wurde.

 enter image description here

0

Ich habe diesen Fehler beim Versuch, eine Lösung mit den folgenden Methoden zu testen

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

Die Art und Weise, wie ich es gelöst habe, war: Ich musste Visual Studio öffnen und es unter einem anderen Konto ausführen, da das Konto, mit dem ich es öffnete, nicht mein Administratorkonto war.

Wenn Ihr Problem also meinem ähnlich ist: Stecken Sie den VS in die Taskleiste, und öffnen Sie das Menü mit Umschalt und Rechtsklick, damit Sie den VS als anderen Benutzer öffnen können.  enter image description here 

0
live-love