Ich habe einen Webdienst erstellt, der einige Daten in db speichert. Aber ich bekomme diesen Fehler:
Die vom Login angeforderte Datenbank "test" kann nicht geöffnet werden. Die Anmeldung ist fehlgeschlagen. Anmeldung für Benutzer 'xyz \ ASPNET' fehlgeschlagen.
Meine Verbindungszeichenfolge ist
Data Source=.\SQLExpress;Initial Catalog=IFItest;Integrated Security=True
c#
asp.net
sql-server
iis
web-services
coure2011
quelle
quelle
Antworten:
Nun, der Fehler ist ziemlich klar, nein? Sie versuchen, mit dem Benutzer "xyz / ASPNET" eine Verbindung zu Ihrem SQL Server herzustellen. Dies ist das Konto, unter dem Ihre ASP.NET-App ausgeführt wird.
Dieses Konto darf keine Verbindung zu SQL Server herstellen. Erstellen Sie entweder eine Anmeldung bei SQL Server für dieses Konto oder geben Sie in Ihrer Verbindungszeichenfolge ein anderes gültiges SQL Server-Konto an.
Können Sie uns Ihre Verbindungszeichenfolge anzeigen (indem Sie Ihre ursprüngliche Frage aktualisieren)?
UPDATE: Ok, Sie verwenden die integrierte Windows-Authentifizierung -> Sie müssen eine SQL Server-Anmeldung für "xyz \ ASPNET" auf Ihrem SQL Server erstellen - oder Ihre Verbindungszeichenfolge in Folgendes ändern:
Wenn Sie einen Benutzer "xyz" mit dem Kennwort "top $ secret" in Ihrer Datenbank haben.
quelle
Ich würde mich für die zweite Option entscheiden: Die Fehlermeldung impliziert, dass die Standarddatenbank entweder nicht vorhanden ist oder keine Rechte darin hat, anstatt nicht als Login eingerichtet zu sein.
Um zu testen, ob es als Login eingerichtet ist
Wenn NULL
Wenn nicht NULL
Wenn NULL
quelle
Ich hatte dieses Problem und was es für mich löste, war:
quelle
Die beste Lösung für das Anmeldeproblem besteht darin, einen Anmeldebenutzer in sqlServer zu erstellen. Führen Sie die folgenden Schritte aus, um eine SQL Server-Anmeldung mit Windows-Authentifizierung (SQL Server Management Studio) zu erstellen:
Wenn der Benutzername beispielsweise lautet
xyz\ASPNET
, geben Sie diesen Namen in das Feld Anmeldename ein.Außerdem müssen Sie die Benutzerzuordnung ändern, um den Zugriff auf die Datenbank zu ermöglichen, auf die Sie zugreifen möchten.
quelle
In den meisten Fällen handelt es sich nicht um ein Anmeldeproblem, sondern um ein Problem beim Erstellen der Datenbank. Wenn also beim Erstellen Ihrer Datenbank ein Fehler auftritt, wird diese überhaupt nicht erstellt. In diesem Fall schlägt die Anmeldung fehl, wenn Sie versuchen, sich unabhängig vom Benutzer anzumelden. Dies geschieht normalerweise aufgrund einer logischen Fehlinterpretation des Datenbankkontexts.
Besuchen Sie die Site in einem Browser und lesen Sie diese Fehlerprotokolle WIRKLICH. Dies kann Ihnen helfen, das Problem mit Ihrem Code zu erkennen (normalerweise widersprüchliche Logikprobleme mit dem Modell).
In meinem Fall wurde der Code einwandfrei kompiliert, dasselbe Anmeldeproblem, während ich noch Management Studio herunterlud. Ich habe das Fehlerprotokoll durchgesehen, meine Datenbankkontextbeschränkungen behoben und die Site wurde einwandfrei ausgeführt. Währenddessen lädt Management Studio noch herunter
quelle
Für mich wurde die Datenbank nicht erstellt und EF-Code hätte sie zuerst erstellen sollen, endet aber immer mit diesem Fehler. Dieselbe Verbindungszeichenfolge funktionierte im Standard-Webprojekt von aspnet core. Die Lösung bestand darin, hinzuzufügen
vor dem ersten Datenbankkontakt (vor dem DB-Seeding).
quelle
Das Thema
Der Fehler wird als ähnliche Meldung angezeigt:
Die Reparatur
Die Lösung wird in den folgenden Schritten gelegt. Sie verlieren keine Daten in Ihrer Datenbank und sollten Ihre Datenbankdatei nicht löschen!
Voraussetzung: Sie müssen SQL Server Management Studio (Full oder Express) installiert haben.
Die Quelle der Lösung: https://www.codeproject.com/Tips/775607/How-to-fix-LocalDB-Requested-Login-failed
quelle
Dies kann auch passieren, wenn Sie den falschen Namen der Datenbank eingeben
Manchmal ist es nur ein dummer Fehler. Ich brauche mehr als 1 Stunde, um das herauszufinden :( weil ich zuerst eine Menge schwieriger Dinge versuche
quelle
Ich habe versucht, den Benutzer zu aktualisieren, und es hat funktioniert. Siehe den Befehl unten.
Einfach entsprechend ersetzen
user('ftool')
.quelle
Das funktioniert bei mir.
Lesen Sie diesen Blog.
http://blog.sqlauthority.com/2009/08/20/sql-server-fix-error-cannot-open-database-requested-by-the-login-the-login-failed-login-failed-for- user-nt-Authoritynetwork-Service /
quelle
Ich habe die Windows-Authentifizierung verwendet, um eine Verbindung zur MDF-Datei der lokalen Datenbank herzustellen, und mein lokaler Server war der SQL Server 2014. Mein Problem wurde mithilfe dieser Verbindungszeichenfolge behoben:
quelle
In meinem Fall ist es ein anderes Problem. Die Datenbank wurde in den Einzelbenutzermodus umgewandelt, und eine zweite Verbindung zur Datenbank zeigte diese Ausnahme. Führen Sie die folgenden Schritte aus, um dieses Problem zu beheben.
exec sp_who2
und suchen Sie alle Verbindungen zur Datenbank 'my_db'. Beenden Sie alle Verbindungen, indem Sie dieKILL { session id }
Sitzungs-ID als die von sp_who2 aufgeführte SPID angeben.quelle
Ich habe dies in den vorherigen Ausgaben nicht erwähnt gesehen, also lassen Sie mich eine andere Möglichkeit ausschließen. Es könnte sein, dass
IFItest
es nicht erreichbar ist oder einfach nicht existiert. Wenn beispielsweise mehrere Konfigurationen mit jeweils einer eigenen Datenbank vorhanden sind, wurde möglicherweise der Datenbankname nicht in den richtigen Namen für die aktuelle Konfiguration geändert.quelle
NB: Wenn Sie einen Windows-Dienst zum Hosten des Webservices verwenden.
Sie müssen sicherstellen, dass Ihr Webservice das richtige Anmeldekonto verwendet, um eine Verbindung zu SQL Server herzustellen.
quelle
Inspiriert von der Antwort von Cyptus, die ich verwendet habe
auf EF6 vor dem ersten Datenbankkontakt (vor dem DB-Seeding).
quelle
Wenn Sie die Datenbank nicht auf Ihrem Server erstellt haben, wird der gleiche Anmeldefehler angezeigt. Stellen Sie sicher, dass die Datenbank vorhanden ist, bevor Sie sich anmelden.
quelle
Ich bin auf dieses Problem gestoßen, als ich versucht habe, in die Standarddatenbank zu schreiben, die in der asp.net mvc-Vorlage enthalten ist. Dies lag daran, dass die Datenbank noch nicht erstellt wurde.
Gehen Sie folgendermaßen vor, um die Datenbank zu erstellen und sicherzustellen, dass sie zugänglich ist:
Dadurch wird die Datenbank erstellt und alle erforderlichen Migrationen ausgeführt.
quelle
Die beste Option wäre die Verwendung der integrierten Windows-Authentifizierung, da diese sicherer ist als die SQL-Authentifizierung. Erstellen Sie einen neuen Windows-Benutzer in SQL Server mit den erforderlichen Berechtigungen und ändern Sie den IIS-Benutzer in den Sicherheitseinstellungen des Anwendungspools.
quelle
Ich stellte fest, dass ich beim Erstellen eines neuen Logins auch die UserMapping-Option festlegen musste, was das Problem für mich löste. Hoffe das hilft jedem, der sich auch hier festgefahren hat!
Bearbeiten: Das Festlegen des Logins als Datenbankbesitzer löste auch das nächste Problem
quelle
Manchmal kann dieses Problem auftreten, wenn Sie diese Datenbank auf einem anderen SQL-Server öffnen (z. B. starten Sie SQL Management Studio (SMS) und fügen diese Datenbank hinzu) und vergessen, diesen Server zu stoppen. Infolgedessen versucht Ihre App, eine Verbindung mit einem Benutzer herzustellen, der bereits in dieser Datenbank unter einem anderen Server verbunden ist. Um dies zu beheben, stoppen Sie diesen Server mit Config. Dispatcher SQL Server.
Ich entschuldige mich für schlechtes Englisch. Herzliche Grüße, Ignat.
quelle
In meinem Fall kann die asp.net-Anwendung normalerweise problemlos eine Verbindung zur Datenbank herstellen. Ich habe eine solche Meldung in Protokollen bemerkt. Ich schalte die SQL Server-Protokolle ein und finde diese Meldung heraus:
Es scheint also, dass der Server neu gestartet wurde und der SQL Server etwas früher als die ASP.NET-Anwendung heruntergefahren wurde und die Datenbank vor dem Neustart des Servers einige Sekunden lang nicht verfügbar war.
quelle
Selbst wenn Sie die Anmeldung als DB-Eigentümer festgelegt und die Benutzerzuordnung für die Datenbank festgelegt haben, die die Anmeldung verwenden soll, überprüfen Sie, ob der tatsächliche DB-Benutzer (nicht nur die Anmeldung) die Rolle des Eigentümers hat.
quelle
In meinem Fall habe ich einen Windows-Dienst unter "System" -Identität ausgeführt. Der Fehler war:
Das Problem ist, dass der Fehler sehr irreführend ist. Selbst nachdem ich der Datenbank die Anmeldung 'MYDOMAINNAME \ HOSTNAME $' hinzugefügt und diesem Anmeldesystemadministrator Zugriff gewährt und einen Benutzer für diese Anmeldung in meiner Zieldatenbank hinzugefügt und diesen Benutzer zum Dbowner gemacht habe, wurde immer noch der gleiche Fehler angezeigt. Anscheinend musste ich dasselbe für die Anmeldung 'NT AUTHORITY \ SYSTEM' tun. Danach konnte ich mich problemlos anmelden. Ich weiß nicht, warum sich die Fehlermeldung über 'MYDOMAINNAME \ HOSTNAME $' beschwert. Ich habe diesen Login und den entsprechenden Benutzer gelöscht und alles funktioniert noch.
quelle