| Termin | Definicja |
|---|---|
| Brak możliwości uruchomienia bazy | Brak możliwości uruchomienia bazy sygnalizuje niepowodzenie procesu udostępnienia bazy danych przez silnik SQL Server. Co oznacza brak możliwości uruchomienia bazy w SQL ServerBrak możliwości uruchomienia bazy w Microsoft SQL Server oznacza, że silnik nie doprowadził bazy do stanu ONLINE. Baza może pozostawać w stanie RECOVERY_PENDING, gdy SQL Server wie, że potrzebne jest odzyskiwanie, ale nie może go rozpocząć, albo w stanie RECOVERING, gdy odzyskiwanie już trwa. Inne możliwe stany to RESTORING po rozpoczęciu odtwarzania kopii zapasowej, SUSPECT po wykryciu problemu podczas odzyskiwania oraz EMERGENCY po ręcznym przełączeniu bazy do trybu awaryjnego. Stan OFFLINE oznacza natomiast, że baza została wyłączona administracyjnie. Uruchomienie bazy nie jest wyłącznie odczytem jednego pliku. SQL Server musi otworzyć plik danych MDF lub NDF oraz plik dziennika transakcji LDF, sprawdzić ich nagłówki, odtworzyć wymagane zmiany zapisane w dzienniku i zapewnić spójność struktur systemowych. Jeżeli brakuje pliku, ścieżka jest niedostępna, plik jest zablokowany albo dziennik nie pozwala na zakończenie procedury odzyskiwania, baza nie przechodzi do normalnej pracy. Sam komunikat o nieuruchomieniu bazy wskazuje skutek, a nie zawsze dokładną przyczynę. Pliki MDF, NDF i LDF oraz dostęp do ścieżekJedną z częstych przyczyn jest brak dostępu do pliku wskazanego w metadanych bazy. SQL Server przechowuje lokalizacje plików w katalogu systemowym i podczas uruchamiania próbuje użyć dokładnie tych ścieżek. Przeniesienie pliku MDF, NDF albo LDF bez wykonania odpowiedniej operacji w SQL Server może spowodować błąd otwarcia bazy. Problem występuje również wtedy, gdy wolumin został odłączony, zmieniła się litera dysku, udział sieciowy nie jest dostępny albo konto usługi SQL Server nie ma uprawnień do odczytu i zapisu w katalogu. W diagnostyce należy odróżnić brak pliku od odmowy dostępu. Do sprawdzenia lokalizacji plików można wykorzystać zapytanie Odzyskiwanie transakcji, dziennik i komunikaty błędówPo nieoczekiwanym zatrzymaniu usługi SQL Server wykonuje odzyskiwanie bazy. Procedura obejmuje fazę analizy, ponowne wykonanie zatwierdzonych operacji oraz wycofanie transakcji, które nie zostały zatwierdzone. Czas trwania zależy między innymi od liczby zmian oczekujących w dzienniku, wydajności magazynu danych i dostępności miejsca. Przerwanie procesu przez kolejne restarty usługi nie usuwa problemu i może rozpocząć odzyskiwanie ponownie. Jeżeli plik LDF jest uszkodzony, niedostępny albo wolumin nie ma wolnego miejsca, SQL Server może nie zakończyć odzyskiwania. Znaczenie mają też błędy wejścia-wyjścia, problemy kontrolera dysku, awaria systemu plików oraz niespójność stron danych. Najważniejszym źródłem informacji jest dziennik błędów SQL Server, a nie wyłącznie komunikat aplikacji. Warto przeanalizować wpisy dotyczące konkretnej nazwy bazy, numeru błędu, ścieżki pliku, kodu błędu systemu Windows i kolejności zdarzeń. Należy również sprawdzić Podgląd zdarzeń systemu Windows oraz stan woluminów. Próby użycia poleceń naprawczych, w tym Bezpieczna kolejność postępowania diagnostycznegoNajpierw trzeba ustalić, czy problem dotyczy jednej bazy, czy całej instancji SQL Server. Jeżeli usługa nie działa, należy sprawdzić jej stan, konto uruchomieniowe, zależności oraz ostatnie wpisy w dzienniku błędów. Jeżeli usługa działa, należy odczytać stan konkretnej bazy w Nie powinno się usuwać pliku dziennika, odłączać bazy, tworzyć pustego pliku o tej samej nazwie ani wymuszać zmiany stanu bez rozpoznania zależności między plikami danych i dziennika. W przypadku bazy działającej w środowisku produkcyjnym istotne jest zachowanie oryginalnych plików, zapisanie pełnych komunikatów oraz ustalenie ostatniej poprawnej kopii zapasowej. Jeżeli przyczyną jest uszkodzenie nośnika, sama operacja w SQL Server nie naprawi warstwy sprzętowej. Jeżeli natomiast problem wynika z błędnej ścieżki lub uprawnień, właściwe przywrócenie dostępu może pozwolić silnikowi na ponowne otwarcie bazy bez ingerencji w jej zawartość. |