it-swarm.com.de

Öffnen der Datenbank "test" nicht möglich, die vom Login angefordert wurde. Die Anmeldung ist fehlgeschlagen. Anmeldung für Benutzer "xyz\ASPNET" fehlgeschlagen

Ich habe einen Webdienst erstellt, der einige Daten in db speichert. Aber ich bekomme diesen Fehler:

Öffnen der Datenbank "test" nicht möglich, die vom Login angefordert wurde. Die Anmeldung ist fehlgeschlagen. Anmeldung für Benutzer 'xyz\ASPNET' fehlgeschlagen.

Meine Verbindungszeichenfolge lautet 

Data Source=.\SQLExpress;Initial Catalog=IFItest;Integrated Security=True
66
coure2011

Nun, der Fehler ist ziemlich klar, nein? Sie versuchen, sich mit dem Benutzer "xyz/ASPNET" mit Ihrem SQL Server zu verbinden. 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 ein Login für dieses Konto in SQL Server oder geben Sie ein anderes gültiges SQL Server-Konto in Ihrer Verbindungszeichenfolge an.

Können Sie uns Ihre Verbindungszeichenfolge zeigen (indem Sie Ihre ursprüngliche Frage aktualisieren)?

UPDATE: Ok, Sie verwenden die integrierte Windows-Authentifizierung -> Sie müssen einen SQL Server-Login für "xyz\ASPNET" auf Ihrem SQL Server erstellen - oder Ihre Verbindungszeichenfolge folgendermaßen ändern:

connectionString="Server=.\SQLExpress;Database=IFItest;User ID=xyz;pwd=top$secret"

Wenn Sie einen Benutzer "xyz" mit dem Kennwort "top $ secret" in Ihrer Datenbank haben.

38
marc_s
  • Entweder: "xyz\ASPNET" ist kein Login (in sys.server_principals)
  • Oder: "xyz\ASPNET" ist eingerichtet, aber keinem Benutzer im Datenbanktest zugeordnet (sys.database_principals).

Ich würde für die zweite Option gehen: Die Fehlermeldung besagt, dass die Standarddatenbank entweder nicht vorhanden ist oder keine Rechte enthält und nicht als Login eingerichtet ist.

Um zu testen, ob es als Login eingerichtet ist 

SELECT SUSER_ID('xyz\ASPNET') -- (**not** SUSER_SID)

Wenn NULL

CREATE LOGIN [xyz\ASPNET] FROM WINDOWS

Wenn nicht NULL

USE test
GO
SELECT USER_ID('xyz\ASPNET')

Wenn NULL

USE test
GO
CREATE USER [xyz\ASPNET] FROM LOGIN [xyz\ASPNET]
19
gbn

Die beste Lösung für das Anmeldeproblem ist das Erstellen eines Anmeldebenutzers in sqlServer. Zum Erstellen eines SQL Server-Anmeldenamens unter Verwendung der Windows-Authentifizierung (SQL Server Management Studio) gehen Sie wie folgt vor:

  1. Öffnen Sie in SQL Server Management Studio den Objekt-Explorer, und erweitern Sie den Ordner die Serverinstanz, in der das neue Login erstellt werden soll.
  2. Klicken Sie mit der rechten Maustaste auf den Ordner Sicherheit, zeigen Sie auf Neu, und klicken Sie dann auf Anmelden.
  3. Geben Sie auf der Seite Allgemein den Namen eines Windows-Benutzers in das Feld Anmeldename ein. 
  4. Wählen Sie Windows-Authentifizierung aus.
  5. OK klicken.

Wenn der Benutzername beispielsweise xyz\ASPNET lautet, geben Sie diesen Namen in das Feld Anmeldename ein.

Sie müssen auch die Benutzerzuordnung ändern, um den Zugriff auf die Datenbank zu ermöglichen, auf die Sie zugreifen möchten.

8
Rajeev

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 sie nicht an erster Stelle erstellt. In diesem Fall schlägt die Anmeldung fehl, wenn Sie versucht haben, sich unabhängig vom Benutzer anzumelden. Dies geschieht normalerweise aufgrund einer logischen Fehlinterpretation des Datenbankkontextes.

Besuchen Sie die Website in einem Browser, und lesen Sie die Fehlerprotokolle WIRKLICH, um das Problem mit dem Code zu erkennen (normalerweise widersprüchliche Logikprobleme mit dem Modell).

In meinem Fall kompilierte der Code gut, dasselbe Anmeldeproblem, während ich noch Management Studio herunterlud, ich das Fehlerprotokoll durchging, meine DB-Kontextbeschränkungen korrigierte und die Website einwandfrei lief

6
Justice O.

Ich hatte dieses Problem und was für mich gelöst wurde war:

  • Wechseln Sie zu den Anwendungspools im IIS
  • Klicken Sie mit der rechten Maustaste auf meinen Projektanwendungspool
  • Öffnen Sie im Abschnitt Prozessmodell die Identität
  • Wählen Sie die Option Benutzerdefiniertes Konto
  • Geben Sie Ihren PC-Benutzernamen und Ihr Kennwort ein.
6
ParPar

Die Angelegenheit

Der Fehler stellt sich als eine ähnliche Meldung dar:

Datenbank "DATABASE NAME" kann nicht geöffnet werden, die vom Login angefordert wurde. Das Login gescheitert. Anmeldung für Benutzer XYZ fehlgeschlagen.

  • Der Fehler kann normalerweise nicht durch einen einfachen Neustart von Visual Studio oder einem vollständigen Computer behoben werden.
  • Der Fehler kann auch als scheinbar gesperrte Datenbankdatei gefunden werden.

Die Reparatur

Die Lösung wird in den folgenden Schritten festgelegt. 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.

  1. Öffnen Sie SQL Server Management Studio
  2. Geben Sie im Fenster "Mit Server verbinden" (Datei-> Objekt-Explorer verbinden) Folgendes ein:
    • Servertyp: Datenbankmodul
    • Servername: (localdb)\v11.0
    • Authentifizierung: [Was auch immer Sie beim Erstellen Ihrer lokalen Datenbank verwendet haben. Wahrscheinlich Windows-Authentifizierung).
  3. Klicken Sie auf "Verbinden".
  4. Erweitern Sie den Ordner "Datenbanken" im Objekt-Explorer (Ansicht-> Objekt-Explorer, F8)
  5. Finden Sie Ihre Datenbank. Es sollte als vollständiger Pfad zu Ihrer Datenbankdatei (.mdf) angegeben werden
    • Es sollte am Ende des Datenbanknamens die Meldung "(Pending Recovery)" stehen. Wenn Sie versuchen, die Datenbank zu erweitern, kann sie nicht und es wird möglicherweise eine Fehlermeldung angezeigt.
    • Das ist das Problem! Ihre Datenbank ist im Wesentlichen abgestürzt.
  6. Klicken Sie mit der rechten Maustaste auf die Datenbank und wählen Sie "Aufgaben -> Trennen ...".
  7. Wählen Sie im Trennungsfenster Ihre Datenbank in der Liste aus und überprüfen Sie die Spalte "Verbindungen trennen".
  8. OK klicken.
  9. Sie sollten sehen, dass die Datenbank aus der Liste der Datenbanken verschwindet. Dein Problem sollte jetzt behoben sein. Starten Sie Ihre Anwendung, die Ihre localdb verwendet.
  10. Nach dem Ausführen Ihrer Anwendung wird Ihre Datenbank erneut in der Liste der Datenbanken angezeigt. Dies ist richtig. Es sollte nicht mehr "Ausstehende Wiederherstellung" sagen, da es ordnungsgemäß funktionieren sollte.

Die Quelle der Lösung:https://www.codeproject.com/Tips/775607/How-to-fix-LocalDB-Requested-Login-failed

3
Anton Lyhin

Für mich wurde die Datenbank nicht erstellt und EF-Code sollte sie zuerst erstellt haben, endete jedoch immer in diesem Fehler. Dieselbe Verbindungszeichenfolge funktionierte in einem Standard-Webprojekt von aspnet core. Die Lösung war hinzuzufügen

_dbContext.Database.EnsureCreated()

vor dem ersten Datenbankkontakt (vor dem Seeding von DB). 

3
cyptus

Ich habe die Windows-Authentifizierung verwendet, um eine Verbindung zur lokalen Datenbank-MDF-Datei herzustellen. Mein lokaler Server war SQL Server 2014. Mein Problem wurde mithilfe der folgenden Verbindungszeichenfolge behoben:

string sqlString = " Data Source = (LocalDB)\\MSSQLLocalDB;" + "AttachDbFilename = F:\\.........\\myDatabase.mdf; Integrated Security = True; Connect Timeout = 30";
2
Ehsan

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 Benutzer IIS in den Sicherheitseinstellungen des Anwendungspools.

1
Giorgi

Ich habe dies in den letzten Ausgaben nicht erwähnt. Lassen Sie mich eine andere Möglichkeit aus dem Weg räumen. Es kann sein, dass IFItest nicht erreichbar ist oder einfach nicht existiert. Wenn Sie beispielsweise über mehrere Konfigurationen verfügen, die jeweils über eine eigene Datenbank verfügen, wurde der Datenbankname möglicherweise nicht in den für die aktuelle Konfiguration richtigen Namen geändert. 

1
demongolem

Ich habe versucht, den Benutzer zu aktualisieren, und es hat funktioniert. Siehe den Befehl unten.

USE ComparisonData// databaseName
EXEC  sp_change_users_login @Action='update_one', @UserNamePattern='ftool',@LoginName='ftool';

Ersetzen Sie einfach user('ftool') entsprechend.

1
shashank

Inspiriert von der Antwort von cyptus, die ich verwendet habe

_dbContext.Database.CreateIfNotExists();

auf EF6 vor dem ersten Datenbankkontakt (vor dem DB-Seeding).

1

Dies geschieht auch, wenn Sie einen falschen DB-Namen eingeben

ex : xxx-db-dev to xxx-dev-db

Irgendwann ist es nur ein dummer Fehler. Ich brauche mehr als 1 Stunden, um das herauszufinden :( weil ich gerade viel schwieriges Ding zuerst probiere 

1
Grey Wolf

Wenn Sie die Datenbank nicht auf Ihrem Server erstellt haben, wird derselbe Anmeldefehler angezeigt. Stellen Sie sicher, dass die Datenbank vorhanden ist, bevor Sie sich anmelden.

0

In meinem Fall kann sich die asp.net-Anwendung normalerweise problemlos mit der Datenbank verbinden. Ich habe eine solche Nachricht in Protokollen bemerkt. Ich schalte die SQL Server-Protokolle ein und finde diese Nachricht heraus:

2016-10-28 10:27:10.86 Logon       Login failed for user '****'. Reason: Failed to open the explicitly specified database '****'. [CLIENT: <local machine>]
2016-10-28 10:27:13.22 Server      SQL Server is terminating because of a system shutdown. This is an informational message only. No user action is required.

Es scheint also, dass der Server neu gestartet wurde und der SQL-Server früher als ASP.NET-Anwendung heruntergefahren wurde und die Datenbank einige Sekunden vor dem Neustart des Servers nicht verfügbar war.

0
Tomas Kubes

Das funktioniert für mich.

  1. Gehen Sie zu SQL Server >> Sicherheit >> Anmeldungen, klicken Sie mit der rechten Maustaste auf NT AUTHORITY\NETWORK SERVICE, und wählen Sie Eigenschaften aus
  2. Wechseln Sie auf einem neu geöffneten Bildschirm mit den Anmeldeeigenschaften zur Registerkarte "Benutzerzuordnung". 
  3. Wählen Sie dann auf der Registerkarte "Benutzerzuordnung" die gewünschte Datenbank aus - insbesondere die Datenbank, für die diese Fehlermeldung angezeigt wird. 
  4. OK klicken.

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/

0
Kamran

Selbst wenn Sie das Login als DB-Besitzer und die Benutzerzuordnung für die Datenbank festgelegt haben, die das Login verwendet, prüfen Sie, ob der tatsächliche DB-Benutzer (nicht nur das Login) die Rolle des "Inhabers" hat.

0
Chris Halcrow

Ich habe festgestellt, dass ich beim Erstellen eines neuen Logins auch die UserMapping-Option einstellen musste. Dadurch wurde das Problem für mich gelöst. Ich hoffe, das hilft jedem, der sich auch hier feststeckt!

Bearbeiten: Das Einstellen des Logins als DB-Besitzer löste auch das nächste Problem

0
DevDave

In meinem Fall habe ich einen Windows-Dienst unter der Identität "System" ausgeführt. Der Fehler war:

System.Data.SqlClient.SqlException (0x80131904): 
Cannot open database "MyDbName" requested by the login. The login failed.
Login failed for user 'MYDOMAINNAME\HOSTNAME$'.

Das Problem ist, dass der Fehler sehr irreführend ist. Auch nachdem ich der Datenbank den Benutzernamen "MYDOMAINNAME\HOSTNAME $" hinzugefügt und diesem Benutzer den Zugriff auf sysadmin gewährt und einen Benutzer für diesen Anmeldenamen in meiner Zieldatenbank hinzugefügt und diesen Benutzer zu "dbowner" gemacht habe, wurde immer noch der gleiche Fehler angezeigt. Anscheinend musste ich dasselbe für die Anmeldung bei 'NT AUTHORITY\SYSTEM' tun. Danach konnte ich mich problemlos einloggen. Ich weiß nicht, warum sich die Fehlermeldung über "MYDOMAINNAME\HOSTNAME $" beschwert. Ich habe das Login und den entsprechenden Benutzer gelöscht und alles funktioniert noch.

0
Greg Z.

Manchmal tritt dieses Problem auf, wenn Sie diese Datenbank in einem anderen SQL-Server öffnen (z. B. starten Sie SQL Management Studio (SMS) und fügen diese Datenbank hinzu) und vergessen Sie, diesen Server zu stoppen. Als Ergebnis - Sie versuchen, eine Verbindung mit Benutzern herzustellen, die bereits in dieser Datenbank unter einem anderen Server verbunden sind. Um dies zu beheben, stoppen Sie diesen Server mit Config. Dispatcher SQL Server. 

Ich entschuldige mich für schlechtes Englisch. Herzliche Grüße, Ignat.

0
user3041948

Hinweis: Bei Verwendung eines Windows-Dienstes zum Hosten des Webservice.

Sie müssen sicherstellen, dass Ihr Webservice das richtige Konto Anmelden verwendet, um eine Verbindung zu SQL Server herzustellen.

  • Offene Dienste (ich gehe davon aus, dass der Windows-Dienst installiert wurde)
  • Klicken Sie mit der rechten Maustaste auf den Dienst und gehen Sie zu den Eigenschaften.
  • Klicken Sie auf die Registerkarte "Anmelden"
  • Klicken Sie auf das Optionsfeld "Dieses Konto" 
  • Klicken Sie auf "Durchsuchen".
  • Geben Sie den PC-Benutzernamen in das Textfeld ein und klicken Sie rechts auf die Schaltfläche "Name prüfen".
  • Klicken Sie auf Text in Textfeld und klicken Sie auf die Schaltfläche "OK"
  • geben Sie das Login-Passwort und Übernehmen ein
0
Koki Monoto