webentwicklung-frage-antwort-db.com.de

Anmeldung für Benutzer '' fehlgeschlagen und Datenbank "Database1.mdf" kann nicht geöffnet werden, die von der Anmeldung angefordert wurde. Die Anmeldung ist fehlgeschlagen. Anmeldung für Benutzer 'rBcollo-PC\rBcollo' fehlgeschlagen

Also ... ich habe es fast geschafft, alle meine Probleme zu lösen. Aber jetzt beschäftige ich mich mit einem anderen. Ich habe diesen Verbindungsstring benutzt:

SqlConnection con = new SqlConnection(@"Data Source=.\SQLEXPRESS;Database=Database1.mdf");

Und es wirft den nächsten Fehler:

Login ist fehlgeschlagen für den Benutzer '

Wenn ich die .mdf -Erweiterung entferne, wird derselbe Fehler ausgegeben

Nun, wenn ich der Zeichenfolge Folgendes hinzufügen werde:

Integrated Security = true

Es wirft dies:

Die vom Login angeforderte Datenbank "Database1.mdf" kann nicht geöffnet werden. Die Anmeldung ist fehlgeschlagen. Anmeldung für Benutzer 'rBcollo-PC\rBcollo' fehlgeschlagen.

P.S for Integrated Security = false, es wird die Meldung "Anmeldung für Benutzer fehlgeschlagen" ausgegeben.

Das Problem ist, dass ich keinen Benutzernamen oder Passwort für die Datenbank verwende.

Hilfe, bitte?

4

Hinweis: Meine Antwort ist anwendbar, wenn Sie EntityFramework Core mit SQL Server verwenden.

Dieser Fehler kann auf den Grund zurückzuführen sein, dass 'Database does not exist' und die Anwendung versuchen, DB-Operationen auszuführen.

Alles, was Sie brauchen, um die folgende Zeile zu verwenden, bevor Sie eine Datenbankoperation ausführen.

_context.Database.EnsureCreated(); 

Und was ist EnsureCreated?

    // Summary:
    //     Ensures that the database for the context exists. If it exists, no action is
    //     taken. If it does not exist then the database and all its schema are created.
    //     If the database exists, then no effort is made to ensure it is compatible with
    //     the model for this context.
    //     Note that this API does not use migrations to create the database. In addition,
    //     the database that is created cannot be later updated using migrations. If you
    //     are targeting a relational database and using migrations, you can use the DbContext.Database.Migrate()
    //     method to ensure the database is created and all migrations are applied.
    //
    // Returns:
    //     True if the database is created, false if it already existed.
7
immirza

Dies wurde nicht beantwortet, also dachte ich, ich würde meinen Vorschlag auflisten, scheint auch in VS Community 2015 vorhanden zu sein, VS als Administrator auszuführen und das Problem zu beheben.

Obwohl die Datenbank in Visual Studio erstellt wurde und unter meinem Konto ausgeführt wird und die Webdienste unter meinem Konto ausgeführt werden, kann ohne Administrator scheinbar nicht auf die Datenbank zugegriffen werden.

Vielleicht kann jemand anderes antworten, warum dies erforderlich ist. Wissen Sie einfach, dass der Administrator erforderlich ist, damit viele VS-Funktionen ordnungsgemäß funktionieren, und wissen Sie nicht, warum sie überhaupt nicht aktiviert sind.

Sehr ärgerlich, nur eine lokale Entwicklerdatenbank zu verwenden. Sollte ohne all diese Fummelei und Fehlinformationen funktionieren.

1
James Gramosli

Wenn Sie Netcore verwenden, vergessen Sie nicht, dotnet ef database update im Projektverzeichnis auszuführen. Ich bekam den gleichen Fehler und das hat ihn für mich behoben.

1
jeffaudio

Wenn Sie Integrated Security = true setzen, versucht das System, sich mit Ihren aktuellen Windows-Anmeldeinformationen bei der Datenbank anzumelden. Wenn Sie dem aktuellen Benutzer in Ihrer Datenbank keine spezielle Berechtigung erteilt haben, funktioniert dies nicht.

Wenn Sie Integrated Security = false festlegen oder die Option Integrated Security überhaupt nicht verwenden, müssen Sie den Benutzernamen und das Kennwort angeben.

Data Source=.\SQLEXPRESS;Database=Database1.mdf;User Id=myUsername;
Password=myPassword;

Ihre Aussage, dass Sie keinen Benutzernamen oder kein Passwort verwenden, ergibt keinen Sinn. Sie müssen einen Benutzernamen und ein Passwort in einer Datenbank haben.

1
CathalMF

In ASP.Net Core kann ein ähnlicher Fehler auftreten, wenn die Datenbank noch nicht erstellt wurde! (Die Fehlermeldung kann Sie verwirren, da sie sich nicht auf die Anmeldung bezieht!).

Es gibt verschiedene Möglichkeiten, dies zu lösen:

Sie können dotnet ef database update nach dotnet ef migrations add Initial in der Befehlszeile im Stammverzeichnis des Projekts ausführen, in dem normalerweise die .csproj-Datei angezeigt wird.

Alternativ können Sie dbContext.Database.EnsureCreated() oder dbContext.Database.Migrate() aufrufen. Die letztere Methode Migrate() wird jedoch empfohlen, da sie spätere Migrationen nicht beschädigt.

public class Program
{
    public static void Main(string[] args)
    {
        var Host = BuildWebHost(args);

        using (var scope = Host.Services.CreateScope())
        {
            var services = scope.ServiceProvider;

            try
            {
                var dbContext = services.GetRequiredService<MyDbContext>();
                //dbContext.Database.EnsureCreated(); //ensure db is created (created database can't be later updated using migrations!)
                dbContext.Database.Migrate(); //ensure pending migrations applied and db is created 
            }
            catch (Exception ex)
            {
                var logger = services.GetRequiredService<ILogger<Program>>();
                logger.LogError(ex, "An error occurred creating the DB.");
            }
        }

        Host.Run();
    }

    public static IWebHost BuildWebHost(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .UseStartup<Startup>()
            .Build();
}
0
S.Serpooshan

sobald Sie "integrated security = true" verwenden, werden Ihre Windows-Anmeldeinformationen verwendet, um sich bei der SQL-Instanz anzumelden. Sie müssen diesem Benutzer die Berechtigungen für die SQL-Instanz erteilen. Wenn Sie Integrated Security = True nicht angeben, wird die Anmeldung als anonymer Benutzer durchgeführt. Aus diesem Grund ist die Anmeldung für Benutzer '.' fehlgeschlagen. Sie können die dritte Option verwenden, um ein SQL-Konto zu erstellen und diese dann in die Verbindungszeichenfolge und die Anmeldung einzutragen. hängt davon ab, was Sie tun möchten.

0
Baahubali