SQL Server pokazuje bazę danych w trakcie odzyskiwania

23

Dzisiaj, po awarii zasilania, jedna baza danych (z odzyskiem: pełna) pokazuje „W trybie odzyskiwania” w SSMS. Więc:

moja baza danych (w trakcie odzyskiwania) (stan bazy danych: odzyskiwanie, zamknięcie)

Po zakończeniu w „procesie odzyskiwania” baza danych wyświetla nazwę moja baza danych bez „(w trakcie odzyskiwania)”. Myślałem, że problem został rozwiązany, ale tak nie było.

Kiedy uruchomiłem aplikację korzystającą z tej bazy danych, dodatkowy tekst „(w trakcie odzyskiwania)” pojawia się ponownie obok nazwy mojej bazy danych.

Czekałem, aż zakończy się „proces odzyskiwania”, a następnie przełączyłem bazę danych w tryb offline i przywróciłem ją do trybu online.

Zrestartowałem serwer, ponownie uruchomiłem komputer i kiedy moja aplikacja była uruchomiona, dodatkowy tekst pojawia się ponownie. W logach SQL Server kilka razy pojawia się komunikat „Uruchamianie bazy danych„ moja baza danych ”. Wygląda na to, że baza danych działa, ponieważ mogę wstawić dane, ale stan pokazuje, że coś się dzieje.

Dziennik serwera nie pokazuje niczego interesującego. Jedyną nienormalną rzeczą jest to, że mam 30 pozycji „Uruchamianie bazy danych„ moja baza danych ””.

Wiem, że po uruchomieniu serwera każda baza danych przechodzi proces odzyskiwania, zanim będzie gotowa do użycia. Ale w moim przypadku baza danych przechodzi do trybu online, a następnie pokazuje „moja baza danych (w trakcie odzyskiwania)”. Jeśli zamknę aplikację, baza danych przejdzie w stan: normalny. Doprowadza mnie to do szału.

Zainstalowałem nawet nową instancję programu SQL Server i umieściłem na niej starą bazę danych „myDatabase”. Problem nadal się zdarza.

Po uruchomieniu tego zapytania:

SELECT databasepropertyex('nyDatabase', 'STATUS')

Pokazuje odzyskiwanie, online, podejrzanego i powrót do trybu online, a następnie odzyskiwanie i tak dalej.

Andres
źródło

Odpowiedzi:

2

Społeczność wiki odpowiedź pierwotnie pozostawiona jako edycja pytania autora:

Problem polegał na tym, że właściwość bazy danych AutoClosebyła włączona.

Rozwiązaniem było ustawienie wartości AutoClosefalse.

użytkownik126897
źródło
16

Nie jestem pewien, czy to pomogłoby rozwiązać problem, ale możesz spróbować.

Biegać:

RESTORE DATABASE YourDatabase WITH RECOVERY

Sprawdź, czy powyższe powoduje wyjście bazy danych z trybu odzyskiwania. Jeśli tak się nie stanie, problemem może być coś innego.

Czy możesz wypróbować poniższe polecenie i sprawdzić, czy baza danych jest uszkodzona?

DBCC CHECKDB ('YourDBname') WITH NO_INFOMSGS, ALL_ERRORMSGS

Jeśli wykryje uszkodzenie, możesz naprawić bazę danych za pomocą DBCC CHECKDB

RK Kuppala
źródło
6

Za każdym razem, gdy włączasz bazę danych w trybie online, przechodzi ona przez proces odzyskiwania. Jestem nieco zdezorientowany twoją frazą problemu. Czy widzisz, że baza danych przechodzi do odzyskiwania w dowolnym momencie innym niż kiedy baza danych jest przełączana w tryb offline (albo z powodu pierwotnej awarii zasilania, albo z powodu przełączenia jej w tryb offline, a następnie ponownie w tryb online)? Jeśli tak, baza danych przechodzi w tryb offline z innego powodu. Najlepiej sprawdzić dzienniki serwera SQL, aby zobaczyć, co się dzieje.

Powinieneś także sprawdzić dziennik zdarzeń systemu Windows pod kątem awarii dysku. Baza danych nie powinna się uruchamiać i odzyskiwać podczas normalnych operacji.

Ben Thul
źródło