Gdy SQL Server zapisuje dane na dyskach, zakłada, że wszystko jest w porządku, dopóki nie będzie musiał odczytać danych z powrotem.
Niestety, w przypadku uszkodzenia pamięci masowej, pamięć masowa nie jest tak uprzejma, aby zaalarmować SQL Server. A czasami SQL Server jest nawet znany z tego, że sam ulega uszkodzeniu.
Musimy okresowo sprawdzać, czy dane na dysku nadal mają sens, i tu z pomocą przychodzi DBCC CHECKDB. Sprawdza on zarówno błędy alokacji, jak i błędy spójności. Dodatkowo, jeśli występują jakieś problemy, komunikaty o błędach będą zawierały informacje dotyczące miejsca występowania błędów, wagi błędu, jak również sugerowanej opcji naprawy.
Istotne jest, aby regularnie uruchamiać CHECKDB w celu znalezienia błędów, jeśli istnieją, ponieważ jeśli występuje uszkodzenie, musimy je naprawić, zanim znikną nasze ostatnie dobre kopie zapasowe.
Aby znaleźć problem, sprawdzamy każdą bazę danych, aby upewnić się, że DBCC CHECKDB wykonał pomyślne sprawdzenie w ciągu ostatnich dwóch tygodni.
Nie wierzysz w to?
„Ale ja cały czas uruchamiam CHECKDB”, mógłbyś powiedzieć – cóż, przekonajmy się:
1
|
DBCC DBINFO(’StackOverflow’) WITH TABLERESULTS
|
To jest to. Ale dane wyjściowe to koszmar. Jest to około 80 linii rzeczy, które prawdopodobnie nigdy nie będą cię obchodzić. Około linii 50 jest to, czego szukasz.
Hi, I’m nonsense.
I to jest prawdopodobnie to, co zobaczysz! Data 1900-01-01 itd. To oznacza, że nigdy. Jeśli uruchomisz DBCC CHECKDB na bazie danych, być może tak:
1
|
DBCC CHECKDB(’StackOverflow’) WITH NO_INFOMSGS, ALL_ERRORMSGS
|
A następnie ponownie wykonaj polecenie DBCC DBINFO, nasza data jest teraz zaktualizowana do bieżącej:
LOOK HOW MUCH FUN WE’RE HAVING
Jeśli data nie jest aktualizowana, oznacza to jedną z dwóch rzeczy: SQL Server nie może pisać do bazy danych (tak jakby była tylko do odczytu), albo znajduje błędy (hoowee, niedobrze.)
Poprawić problem
Zdecyduj, czy chcesz użyć wbudowanych Planów Konserwacji, czy darmowego narzędzia, takiego jak darmowe skrypty CHECKDB Ola Hallengrena. Kilka uwag:
- Plany konserwacji mają interfejs graficzny, na wypadek gdybyś nie znał T-SQL.
- Darmowe skrypty Oli Hallengrena zajmują się drobnymi opcjami, takimi jak automatyczne uruchamianie kontroli czystości danych (co jest dobrą rzeczą).
Jak skonfigurować regularną konserwację w celu sprawdzenia uszkodzeń
Opcja 1: Użyj planu konserwacji do uruchomienia DBCC CHECKDB
Jeśli używasz planów konserwacji, możesz edytować plany konserwacji w SQL Server Management Studio pod Zarządzanie, Plany konserwacji. Twój serwer może mieć wiele planów konserwacji, które uruchamiają CHECKDB dla różnych typów baz danych, na przykład jeden dla baz systemowych, a drugi dla baz użytkowników.
Rozwiń węzeł Zarządzanie w SSMS, kliknij prawym przyciskiem myszy na Plany konserwacji i wybierz Nowy plan.
W oknie Toolbox, które czasami jest ukryte po lewej stronie, przeciągnij zadanie Check Database Integrity Task na kartę Maintenance Plan.
Po dwukrotnym kliknięciu pola Check Database Integrity Task na karcie Maintenance Plan, będziesz mógł wybrać bazy danych, które mają zostać sprawdzone podczas procesu.
Od tego momentu pozostaje już tylko zaplanowanie zadania, co jest analogiczne do planowania zadań agenta.
Po zapisaniu i zamknięciu planu konserwacji należy odszukać powiązane zadanie w programie SQL Server Agent i ustawić właściwości Powiadomienia, aby operator był informowany o jego niepowodzeniu.
Opcja 2: Konfigurowanie zadań agenta SQL do uruchamiania DBCC CHECKDB przy użyciu bezpłatnych skryptów Ola Hallengrena
Jeśli wdrażasz sprawdzanie integralności po raz pierwszy, rozważ użycie bezpłatnych skryptów konserwacyjnych Ola Hallengrena. Nie są one tak łatwe jak plany konserwacji, ale są o wiele bardziej elastyczne. Umożliwiają również rozbicie operacji DBCC na mniejsze fragmenty w przypadku dużych baz danych. Na bardzo dużych bazach danych CHECKDB może zająć znaczną ilość czasu i zasobów – opcja WITH PHYSICAL_ONLY jest szybsza, ale pomija sprawdzanie logiczne.
Gdy zadania agenta są już gotowe, można je zaplanować tak, aby działały tak prosto jak plany konserwacji, lub można je dostroić za pomocą dodatkowych opcji udokumentowanych tutaj.