Frage

Ich weiß, dass dies fast ein Duplikat von ist: Der Fehler „Anmeldung für Benutzer ‚NT AUTHORITY\IUSR‘ fehlgeschlagen“ in ASP.NET und SQL Server 2008 Und Anmeldung für Benutzer „Benutzername“ fehlgeschlagen – System.Data.SqlClient.SqlException mit LINQ in externer Projekt-/Klassenbibliothek Aber einige Dinge passen im Vergleich zu anderen Anwendungen auf meinem Server nicht zusammen, und ich bin mir nicht sicher, warum.

Verwendete Boxen:

Web-Box
SQL-Box
SQL-Testbox

Meine Bewerbung:

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

Die Verbindungszeichenfolge verwendet SQL-Anmeldeinformationen wie folgt (sowohl in der Web-App als auch in der 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" />

Durch Hinzufügen zum Server-Explorer wurde bestätigt, dass diese Verbindung funktioniert.Dies ist die Verbindungszeichenfolge, die meine .dbml-Datei verwendet.

Das Problem:

Ich erhalte die folgende Fehlermeldung:

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

Ich beziehe mich jetzt darauf Der Fehler „Anmeldung für Benutzer ‚NT AUTHORITY\IUSR‘ fehlgeschlagen“ in ASP.NET und SQL Server 2008 Es heißt, dass es sich tatsächlich um den lokalen Netzwerkdienst handelt und die Verwendung eines anderen Namens, der kein Domänenname ist, nicht funktionieren wird.

Aber ich bin verwirrt, weil ich sowohl SQL Box als auch SQL Test Box SQL Management Studio überprüft habe und beides getan hat NT AUTHORITY/NETWORK SERVICE Unter Sicherheit -> Anmeldungen auf Datenbankebene wird das nicht unter Sicherheit -> Benutzer aufgeführt, aber auf Datenbankebene Sicherheit -> Benutzer wird mir der Benutzer in der Verbindungszeichenfolge angezeigt.

Auf NTFS-Ebene auf dem Webserver haben die Berechtigungen NETWORK SERVICE die volle Kontrolle.

Der Grund, warum ich verwirrt bin, liegt darin, dass ich viele andere Webanwendungen auf meinem Webserver habe, die auf Datenbanken sowohl in SQL Box als auch in SQL Test Box verweisen, und alle funktionieren.Ich kann jedoch keinen Unterschied zwischen ihnen und meiner aktuellen Anwendung feststellen, außer dass ich eine Klassenbibliothek verwende.Wird das wichtig sein?Die Überprüfung von NTFS-Berechtigungen, die Einrichtung von Sicherheitsanmeldungen auf Server- und Datenbankebene, die Verbindungszeichenfolge und die Verbindungsmethode (SQL Server-Anmeldeinformationen) sowie der IIS-Anwendungspool und andere Ordneroptionen sind alle gleich.

Warum funktionieren diese Anwendungen, ohne den Maschinennamen$ zu den Berechtigungen einer meiner SQL-Boxen hinzuzufügen?Aber genau das sagt mir der eine Link, um dieses Problem zu beheben.

War es hilfreich?

Lösung

NETWORK SERVICE und Localsystem wird authentifizieren sich immer als Korrespondenzpartners Konto lokal (BUILTIN \ Netzwerkdienst und BUILTIN \ System), aber beide werden als das Computerkonto authentifizieren Ferne.

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

Ein typisches Beispiel eine ASP-Anwendung in einem app-Pool-Set laufen würde NETWORK SERVICE Berechtigungsnachweis und eine Verbindung zu einem Remote-SQL-Server zu verwenden: Der App-Pool wird wie die Authentifizierung von Maschine den App-Pool ausgeführt wird, und ist diese Maschine Rechnung, dass der Bedarf der Zugriff gewährt werden.

Wenn der Zugriff auf ein Computerkonto verweigert wird, dann muss der Zugang zu dem Computerkonto gewährt werden. Wenn der Server zum Login 'DOMAIN \ MACHINE $' verweigert, dann müssen Sie Anmelderechte auf 'DOMAIN \ MACHINE $' gewähren nicht NETWORK SERVICE. Die Gewährung des Zugangs zu NETWORK SERVICE erlauben würde, eine lokale Prozess läuft als NETWORK SERVICE zu verbinden, keine Remote ein, da die entfernte man als authentifiziert, Sie ahnen, DOMAIN \ MACHINE $.

Wenn Sie die ASP-Anwendung erwarten, dass der Remote-SQL-Server als SQL-Anmeldung verbinden und Sie erhalten Ausnahmen über DOMAIN \ MACHINE $ bedeutet es Sie integrierte Sicherheit verwenden, in der Verbindungszeichenfolge. Wenn das unerwartet ist, es bedeutet, dass Sie die Verbindungszeichenfolgen vermasseln Sie verwenden.

Andere Tipps

Dieser Fehler tritt auf, wenn Sie Ihre Anwendung mit IIS konfiguriert haben, und IIS geht zu SQL Server und versucht, Login mit Anmeldeinformationen, die keine richtigen Berechtigungen verfügen. Dieser Fehler kann auch auftreten, wenn die Replikation oder die Spiegelung eingerichtet wird.  Ich werde eine Lösung gehen über die immer und ist sehr einfach funktioniert. Zum SQL Server >> Sicherheit >> Logins und der rechten Maustaste auf NT AUTHORITY \ NETWORK SERVICE und wählen Sie Eigenschaften

Im neu eröffneten Bildschirm von Login-Eigenschaften finden Sie auf der „User Mapping“ Registerkarte. Dann wird auf der „Benutzerzuordnung“, wählen Sie die gewünschte Datenbank - insbesondere die Datenbank, für die diese Fehlermeldung angezeigt wird. Auf dem unteren Bildschirm, überprüfen Sie die Rolle db_owner. Klicken Sie auf OK.

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

Nachdem ich IIS APPPOOL\ApplicationName Benutzer zu SQL Server hinzugefügt funktioniert es.

Ein Kollege hatte den gleichen Fehler und es war aufgrund eines kleinen Konfigurationsfehlers in IIS.
Die falsche Anwendung Pool wurde für die Web-Anwendung zugeordnet.

Tatsächlich verwenden wir eine benutzerdefinierte Application Pool mit einer spezifischen Identität unsere Bedürfnisse zu erfüllen.

In seinem lokalen IIS-Manager -> Seiten -> Standard-Web-Site -> Unsere Web App Name -> Grundeinstellungen ... Der Application Pool war "DefaultAppPool" statt unserer kundenspezifischen Applikationspool.

Einstellen der richtigen Anwendungspool das Problem gelöst.

Der Trick, der für mich gearbeitet wurde Integrated Security von meiner Verbindungszeichenfolge zu entfernen und einem regelmäßigen User ID=userName; Password=password Verbindungszeichenfolge in den App.config Ihrer libruary hinzufügen möchte nicht integrierte Sicherheit verwenden, aber das in Web.config geschaffen ist!

Ich habe <identity impersonate="true" /> meinen web.config und es funktionierte gut.

Im Grunde ist dies zu lösen, müssen wir ein paar Set haben sich wie

  • Web App Laufen unter Application
  • Web Application Verbindung mit Datenbanken über ADO.Net mit Windows-Authentifizierung in der Verbindungszeichenfolge

Die Verbindungszeichenfolge mit der Windows-Authentifizierung verwendet werden, umfassen entweder Trusted_Connection=Yesattribute oder das Äquivalent Attribut Integrated Security=SSPI in Web.config Datei

Meine Datenbankverbindung ist in Windows-Authentifizierungsmodus. Also habe ich es durch einfaches Ändern der Anwendungspools aufgelöst Identity von Application , um meine Domain Anmeldedaten Domainname \ MyloginId

Schritt:

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

  3. Gehen Sie auf Erweiterte Einstellungen

  4. erweitern Prozessmodell und klicken Sie auf Identity . klicken Sie drei Punkt auf dem rechten Ende.
  5. Klicken Sie auf ... und Geben Ihre Domain-Anmeldedaten

Für mich ist es gelöst wurde.

Hinweis: in der Produktion oder IT-Umgebung, können Sie Dienstkonto unter derselben Domain für AppPool Identität haben. Wenn ja, macht Gebrauch Service statt Ihrer Anmeldung.

Für mich ist das Problem behoben wurde, wenn ich den Standard ersetzt Integriertes Konto ‚Application‘ mit einem Netzwerk-Konto, das Zugriff auf die Datenbank erlaubt wurde.

Die Einstellungen können im Internet Information Server (IIS 7+)> Anwendungspools> Advanded Einstellungen> Prozessmodell> Identität

Für mich Ausgabe mit 'DOMAIN \ MACHINE $' fixed von DefaultApplicationPool Identität zu NetworkService Einstellung.

Wir hatten ähnliche Fehlermeldungen wurden immer während einer Datenbank Analysis Service zu verarbeiten. Es stellte sich heraus, dass der Benutzername, der verwendet wurde, die Analysis Services-Instanz ausgeführt werden, um die SQL Server Security Logins hinzugefügt worden war.

In SQL Server 2012 werden die SQL Server und Analysis Services konfiguriert ist, wie verschiedene Benutzer standardmäßig ausgeführt werden. Wenn Sie mit den Standardeinstellungen gegangen sind, immer sicherstellen, dass der AS Benutzer Zugriff auf Ihre Datenquelle hat!

Überprüfen Sie, ob Sie

User Instance=true

in Verbindungszeichenfolge. Versuchen Sie es zu entfernen, die Ihr Problem behoben wird.

Ich habe auch diesen Fehler mit einem SQL-Server authentifizierte Benutzer

Ich habe versucht, einige der Korrekturen, aber sie hat nicht funktioniert.

Die Lösung in meinem Fall war den „Server-Authentifizierungsmodus“ konfigurieren SQL Server-Authentifizierung zu ermöglichen, unter Management Studio. Eigenschaften / Sicherheit

Der einzige Punkt, dass jeder übersehen zu haben scheint, ist, dass Sie die integrierte Sicherheit mögen = true. Sie können die Website unter einem Pool Konto ausgeführt haben. Das ist alles in Ordnung so und es ist immer noch möglich, den SQL Server mit den ursprünglichen Anmeldeinformationen des Benutzers und nicht das Becken getroffen. Es ist die eingeschränkte Delegierung genannt. Wenn Sie es aktivieren und ein SPN Fenster eingerichtet wird, auf den Pool des Anmeldeinformationen übersetzen mit der Benutzer auf Anfragen ist zum letzten Dienst gehen (SQL ist nur ein solcher Service). Sie müssen den ONE registrieren, und nur SQL-Server, dass die Dienste-Anforderungen auf dem Web-Server SQL. Einstellen all up ist zu viel für mich genau zu versuchen, hier zu beschreiben. Es dauerte eine ganze Weile, um Arbeit durch sie selbst.

verbrachte ich ein paar Stunden versucht, das Problem zu beheben und ich es endlich - der SQL Server-Browser „Stopped“ wurde. Das Update ist es auf „Automatik“ -Modus zu ändern:

  

Wenn es deaktiviert ist, gehen Sie zu Systemsteuerung-> Verwaltung-   > Dienste, und suchen Sie den SQL Server-Agent. Rechtsklick und   wählen Sie „Eigenschaften“. Von dem „Starttyp“ Drop-down-Wechsel von   "Disabled" auf "Automatisch".

Zitat von hier

Ich habe das gleiche Problem früher, das Entfernen Persist Security Info=True von Connectionstring für mich gearbeitet.

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

Alle ihre alten IIS-Apps funktionierten und leiteten über den Alias ​​auf den neuen Servernamen um.Aus einer Ahnung heraus überprüfte ich, ob SSRS ausgeführt wurde.Der Versuch, eine Verbindung zur SSRS-Site herzustellen, führte zu folgendem Fehler:

„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 zugänglich ist.Weitere Informationen finden Sie auch im Ablaufverfolgungsprotokoll des Berichtsservers."

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

  1. Ändern der App Pool Identität zu Lokales System
  2. Auf SQL Mgmt> Sicherheit> Anmeldungen
    1. Finden NT AUTHORITY \ SYSTEM Doppelklick auf
    2. User Mappings> Überprüfen Sie Ihre Datenbank und geben ihm eine Rolle unten.
    3. Denken Sie daran, auch die Benutzerdatenbank o Sicherheitsanmeldungen mit einem korrekten Passwort zu erstellen.

Ich habe diese Fehler versuchen, eine Lösung zu testen, mit dem folgenden

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

So wie ich das gelöst war. Ich hatte Visual Studio zu öffnen und es unter einem anderen Konto ausgeführt werden, weil das Konto mir offen mit nicht mein Admin-Konto war

Also, wenn Ihr Problem ist ähnlich wie meins: Stift des VS in die Taskleiste, dann verwenden Sie die Umschalttaste und Rechtsklick das Menü zu öffnen, so dass Sie VS als einen anderen Benutzer öffnen können. eingeben Bild Beschreibung hier

Schätzen gibt es ein paar gute Antworten hier, aber wie ich habe gerade Zeit arbeiten, um dieses heraus verloren, hoffentlich Dies kann helfen, jemand.

In meinem Fall war alles in Ordnung, dann, ohne ersichtlichen Grund mit dem Fehler blieb in der Frage angegeben.

IIS ausgeführt wurde als Netzwerk-Dienst und Netzwerkdienst war zuvor auf SQL Server einrichten (siehe andere Antworten zu diesem Beitrag). Server-Rollen und Benutzerzuordnungen sahen richtig.

Das Problem war; für absolut keinen ersichtlichen Grund; Network Service hatte geschaltet 'Verweigern' Login-Rechte in der Datenbank.

Um fix:

  1. Öffnen SSMS> Sicherheit> Anmeldungen.
  2. Rechtsklick 'NT AUTHORITY \ NETWORK SERVICE' und klicken Sie auf Eigenschaften.
  3. Gehen Sie auf 'Status' Registerkarte und Set Permission to Connect To Database Engine To 'Grant.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top