wake-up-neo.com

Anmeldung für Benutzer 'NT AUTHORITY \ NETWORK SERVICE' fehlgeschlagen

Ich habe jetzt seit 2 Tagen damit zu kämpfen, ohne näher an die Lösung heranzukommen. Ich habe schon 20-30 Threads gelesen und kann das noch nicht lösen.

Bitte hilf mir.

Ich habe die anonyme Authentifizierung deaktiviert und den asp.net-Identitätswechsel aktiviert.

Ich habe hinzugefügt <identity impersonate = "true" />

Ich habe den Benutzer a zu den Sicherheitsanmeldungen hinzugefügt, die mit der Datenbank verbunden sind, zu der ich eine Verbindung herstellen möchte

Dies ist die Verbindungszeichenfolge, die ich verwende:

Data Source=IPTOSERVER;Initial Catalog=Phaeton;User Id=User;Password=Password;

fehlermeldung:

Die vom Login angeforderte Datenbank "Phaeton.mdf" kann nicht geöffnet werden. Die Anmeldung ist fehlgeschlagen.

Anmeldung für Benutzer 'NT AUTHORITY\NETWORK SERVICE' fehlgeschlagen.

30
Dejan.S

Die Fehlermeldung, die Ihnen angezeigt wird, besagt, dass die Anwendung keine Verbindung zur sqlexpress-Datenbank und nicht zum SQL-Server herstellen konnte. Ich werde nur den Namen der Datenbank in SQL Server ändern und dann die Verbindungszeichenfolge entsprechend aktualisieren und es erneut versuchen.

Ihre Fehlermeldung besagt Folgendes:

Cannot open database "Phaeton.mdf" requested by the login. The login failed.

Mir scheint, Sie versuchen immer noch, eine Verbindung zur dateibasierten Datenbank herzustellen. Der Name "Phaeton.mdf" stimmt nicht mit Ihrem neuen SQL-Datenbanknamen "Phaeton" überein.

Hoffe das hilft.

8
Ricardo Sanchez

In der Windows-Ereignisanzeige ist eine ähnliche Fehlermeldung aufgetreten:

Anmeldung für Benutzer 'NT AUTHORITY\NETWORK SERVICE' fehlgeschlagen. Grund: Fehler beim Öffnen der explizit angegebenen Datenbank. [CLIENT: lokaler Rechner]

Die Lösung, die mein Problem löste, war:

  1. Melden Sie sich über SQL Server Management Studio bei SqlExpress an
  2. Wechseln Sie in das Verzeichnis "Sicherheit" der Datenbank
  3. Klicken Sie mit der rechten Maustaste auf das Benutzerverzeichnis
  4. Wählen Sie "Neuer Benutzer ..."
  5. Fügen Sie als neuen Benutzer 'NT AUTHORITY\NETWORK SERVICE' hinzu
  6. Wählen Sie im Bereich Datenrollenmitgliedschaft die Option db_owner aus
  7. OK klicken

Hier ist ein Screenshot von oben: Screenshot of adding new user Network Service as db_owner to SqlExpress

83
Jed

Wenn die Fehlermeldung gerade ist

"Anmeldung für Benutzer 'NT AUTHORITY\NETWORK SERVICE' fehlgeschlagen.", Erteilen Sie dann die Anmeldeberechtigung für 'NT AUTHORITY\NETWORK SERVICE'.

durch die Nutzung

"sp_grantlogin 'NT AUTHORITY\NETWORK SERVICE'" 

sonst wenn die fehlermeldung gefällt

"Die vom Login angeforderte Datenbank" Phaeton.mdf "kann nicht geöffnet werden. Der Login ist fehlgeschlagen. Login für Benutzer" NT AUTHORITY\NETWORK SERVICE "ist fehlgeschlagen."

versuchen Sie es mit

"EXEC sp_grantdbaccess 'NT AUTHORITY\NETWORK SERVICE'" 

unter Ihrer "Phaeton" -Datenbank.

8
Santosh

Ich mochte Jeds Lösung, aber das Problem dabei war, dass jedes Mal, wenn ich mein Projekt im Debug-Modus erstellte, mein Datenbankprojekt bereitgestellt und der Benutzer wieder entfernt wurde. Deshalb habe ich dieses MySQL-Skript zum Post-Deployment-Skript hinzugefügt. Es macht praktisch das, was Jed gesagt hat, aber es erstellt den Benutzer jedes Mal, wenn ich es bereitstelle.

CREATE USER [NT AUTHORITY\NETWORK SERVICE]
    FOR LOGIN [NT AUTHORITY\NETWORK SERVICE]
    WITH DEFAULT_SCHEMA = dbo;
Go

EXEC sp_addrolemember 'db_owner', 'NT AUTHORITY\NETWORK SERVICE'
6
Ida N

Die erforderliche SQL Server-Anmeldung ist DOMAIN\machinename$. Dies ist die Art und Weise, wie der aufrufende NT AUTHORITY\NETWORK SERVICE wird für SQL Server (und Dateiserver usw.) angezeigt

In SQL

CREATE LOGIN [XYZ\Gandalf$] FROM WINDOWS
2
gbn

Sie sagten, es hat gut funktioniert, als Sie SQL Express Edition verwendet haben. Standardmäßig erstellen Express-Editionen eine benannte Instanz und werden in NT Authority\Network Service ausgeführt.

SQL Server STD installiert standardmäßig eine Standardinstanz und wird in NT Authority\SYSTEM ausgeführt.

Haben Sie sowohl die vollständige SQL Edition als auch die Express Edition auf demselben Computer installiert?

  1. Es kann sein, dass die Verbindungszeichenfolge irgendwo immer noch auf die benannte Instanz 'SQLEXPRESS' verweist und nicht auf die von der Vollversion erstellte Standardinstanz.

  2. Auch wo ist die Verbindungszeichenfolge definiert? Stellen Sie in IIS oder in Ihrem Code? Sicher, dass alle auf dieselbe SQL-Instanz und -Datenbank verweisen, wenn sie an vielen Stellen definiert sind.

  3. Überprüfen Sie auch den detaillierten Fehler in den SQL Server-Fehlerprotokollen. Die im Ereignisprotokoll protokollierten Fehler sind aus Sicherheitsgründen nicht vollständig. Auf diese Weise können Sie auch feststellen, ob die Verbindung zum richtigen SQL Server hergestellt wurde.

  4. Stellen Sie außerdem sicher, dass auf den Computer zugegriffen werden kann, auf dem SQL installiert ist & IIS versucht, auf denselben Computer zuzugreifen. In meinem Unternehmen schlägt die Abfrage manchmal aufgrund einer falschen Namensauflösung fehl, da die meisten unserer Computer fehlerhaft sind SQL installiert haben und die Abfrage im falschen SQL Server landet.

  5. Stellen Sie sicher, dass die Datenbank in SQL Server vorhanden ist. Der in SQL Management Studio unter Datenbanken angezeigte Name sollte mit dem in der Verbindungszeichenfolge übereinstimmen.

2
Ganesh R.

Am besten erstellen Sie einen Benutzer für Ihre Anwendung und weisen die für diesen Benutzer geeigneten Berechtigungen zu. Verwenden Sie nicht 'NT AUTHORITY\NETWORK SERVICE' als Benutzer, da dies eine eigene Sicherheitsanfälligkeit darstellt und Benutzer mit Berechtigungen für so viele Dinge auf Betriebssystemebene sind. Halten Sie sich von diesem eingebauten Benutzer fern.

1
Vuyiswa Maseko

Ich verwende Entity Framework, um meine Datenbank neu zu aktualisieren, und die Benutzer werden jedes Mal überschrieben, wenn ich meine Datenbank generiere.

Jetzt führe ich dies jedes Mal aus, wenn ich einen neuen DBContext lade:

cnt.Database.ExecuteSqlCommand("EXEC sp_addrolemember 'db_owner', 'NT AUTHORITY\\NETWORK SERVICE'");