Ich weiß, dass dies fast ein Duplikat von: Der Fehler "Anmeldung für Benutzer 'NT AUTHORITY \ IUSR' fehlgeschlagen" in ASP.NET und SQL Server 2008 und Anmeldung für Benutzer 'Benutzername' - System.Data.SqlClient.SqlException mit LINQ in fehlgeschlagen externe Projekt- / Klassenbibliothek, aber einige Dinge passen nicht zu anderen Anwendungen auf meinem Server, und ich bin mir nicht sicher, warum.
Verwendete Boxen:
Web Box
SQL Box
SQL Test Box
Meine Bewerbung:
Ich habe eine ASP.NET-Webanwendung, die auf eine Klassenbibliothek verweist, die LINQ-to-SQL verwendet. Die Verbindungszeichenfolge wurde ordnungsgemäß in der Klassenbibliothek eingerichtet. Wie pro Anmeldung für den Benutzer ‚username‘ ist fehlgeschlagen - System.Data.SqlClient.SqlException mit LINQ in externem Projekt / Klassenbibliothek ich auch diese Verbindungszeichenfolge an die Web Application hinzugefügt.
Die Verbindungszeichenfolge verwendet SQL-Anmeldeinformationen (sowohl in der Webanwendung 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" />
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$'.
Jetzt darauf verweisen Der Fehler "Anmeldung für Benutzer 'NT AUTHORITY \ IUSR' fehlgeschlagen" in ASP.NET und SQL Server 2008 besagt, dass dies wirklich der lokale Netzwerkdienst ist und die Verwendung eines anderen Nicht-Domänennamens nicht funktioniert.
Ich bin jedoch verwirrt, weil ich sowohl SQL Box als auch SQL Test Box SQL Management Studio aktiviert habe und beide NT AUTHORITY/NETWORK SERVICE
unter Sicherheit -> Anmeldungen auf Datenbankebene nicht unter Sicherheit -> Benutzer aufgeführt sind, sondern auf Datenbankebene Sicherheit -> Benutzer Ich habe den Benutzer in der Verbindungszeichenfolge angezeigt.
Auf NTFS-Ebene auf dem Webserver haben die Berechtigungen die volle Kontrolle über NETWORK SERVICE.
Der Grund, warum ich verwirrt bin, ist, 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? Das Überprüfen der NTFS-Berechtigungen, das Einrichten von Sicherheitsanmeldungen auf Server- und Datenbankebene, die Verbindungszeichenfolge und die Verbindungsmethode (SQL Server-Anmeldeinformationen) sowie der IIS-Anwendungspool und andere Ordneroptionen sind identisch.
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.