In der SQL Server-Fehlerprotokolldatei habe ich die folgenden Zeilen gefunden:
2018-02-22 14:10:58.95 spid17s Starting up database 'msdb'.
2018-02-22 14:10:58.95 spid16s Starting up database 'ReportServer'.
2018-02-22 14:10:58.95 spid18s Starting up database 'ReportServerTempDB'.
2018-02-22 14:10:58.95 spid19s Starting up database 'XYZ'.
Wenn ich vor diesem Zeitpunkt den Status der Datenbank XYZ überprüfe, wird ONLINE
die folgende Anweisung verwendet:
SELECT state_desc FROM sys.databases WHERE name='XYZ'
... aber wenn ich versuche, mit einer C # -Anwendung eine Verbindung zu dieser Datenbank herzustellen, kann keine Verbindung zur Datenbank hergestellt werden.
Der Fehler ist:
Anmeldung für Benutzer 'asd' fehlgeschlagen.
Grund: Fehler beim Öffnen der explizit angegebenen Datenbank.
Ich habe drei verschiedene Benutzer ausprobiert (Windows-Benutzer, sa, SQL Server-Benutzer, der für die Anwendung definiert wurde). Das Problem tritt auf, wenn ich die Anwendung beim Start des Betriebssystems ausführe. Wenn ich sie jedoch nach dem Start manuell starte, treten keine Fehler auf. Daher denke ich, dass alle SQL Server-Einstellungen und Firewall-Einstellungen korrekt sind.
Ich habe auch vorher überprüft, ob der Dienststatus ausgeführt wird.
Was sollte ich noch überprüfen, um sicherzustellen, dass die Datenbank tatsächlich online und für Abfragen bereit ist?
Ich suche nach einem Schlüssel, der mir sagt, dass es in Ordnung ist, die Datenbank abzufragen, anstatt eine Zeit lang zu verzögern (auch nicht aus einem klaren Grund).
Ich habe darüber nachgedacht, das Fehlerprotokoll nach dem Text "Starten der Datenbank 'XYZ'" zu durchsuchen. Dies bedeutet jedoch, dass ich für die Anwendung eine Einstellung für den Pfad des SQL Server-Fehlerprotokolls hinzufügen muss. Es bedeutet auch, die Datei viele Male zu lesen, bis ich diesen Satz finde.