W pliku dziennika błędów programu SQL Server znalazłem następujące wiersze:
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'.
Jeśli przed tym czasie sprawdzę status bazy danych XYZ, ONLINE
używa ona następującej instrukcji:
SELECT state_desc FROM sys.databases WHERE name='XYZ'
... ale kiedy próbuję połączyć się z tą bazą danych za pomocą aplikacji C #, nie może połączyć się z bazą danych.
Błąd jest następujący:
Logowanie nie powiodło się dla użytkownika „asd”.
Powód: Nie można otworzyć jawnie określonej bazy danych.
Próbowałem trzech różnych użytkowników (użytkownik Windows, sa, użytkownik SQL Server zdefiniowany dla aplikacji). Problem występuje, gdy uruchamiam aplikację podczas uruchamiania systemu operacyjnego, ale jeśli uruchomię ją ręcznie po uruchomieniu, nie wystąpią żadne błędy, więc myślę, że wszystkie ustawienia programu SQL Server i zapory są prawidłowe.
Sprawdziłem też wcześniej, czy status usługi jest uruchomiony.
Co jeszcze powinienem sprawdzić, aby upewnić się, że baza danych jest rzeczywiście online i gotowa na zapytania?
Szukam klucza, który powiedziałby mi, że można odpytywać bazę danych, zamiast opóźniać (nawet nie na podstawie wyraźnego powodu).
Myślałem o skanowaniu dziennika błędów w poszukiwaniu tekstu „Uruchamianie bazy danych„ XYZ ””, ale oznacza to, że muszę dodać ustawienie dla aplikacji dla ścieżki dziennika błędów SQL Server. Oznacza to także wielokrotne czytanie pliku, dopóki nie znajdę tego wyrażenia.