Udostępnij za pośrednictwem


Zarządzanie tabelą suspect_pages (SQL Server)

Dotyczy:programu SQL Server

W tym temacie opisano sposób zarządzania tabelą suspect_pages w programie SQL Server przy użyciu programu SQL Server Management Studio lub Języka Transact-SQL. Tabela suspect_pages służy do utrzymywania informacji o podejrzanych stronach i jest istotna przy podejmowaniu decyzji, czy przywracanie jest konieczne. Tabela suspect_pages jest umieszczona w bazie danych msdb .

Strona jest uznawana za "podejrzanego", gdy aparat bazy danych programu SQL Server napotka jeden z następujących błędów podczas próby odczytania strony danych:

  • Błąd 823, który został spowodowany cyklicznym sprawdzaniem nadmiarowości (CRC) wystawionym przez system operacyjny, taki jak błąd dysku (niektóre błędy sprzętowe)

  • Błąd 824, taki jak rozdarta strona (dowolny błąd logiczny)

Identyfikator każdej podejrzanej strony jest rejestrowany w tabeli suspect_pages. Aparat bazy danych rejestruje wszystkie podejrzane strony napotkane podczas regularnego przetwarzania, takie jak:

  • Zapytanie musi odczytać stronę.

  • Podczas operacji DBCC CHECKDB.

  • Podczas operacji tworzenia kopii zapasowej.

Tabela suspect_pages jest również aktualizowana w razie potrzeby podczas operacji przywracania, operacji naprawy DBCC lub operacji usuwania bazy danych.

w tym temacie

Przed rozpoczęciem

Zalecenia

  • Błędy zarejestrowane w tabeli suspect_pages

    Tabela suspect_pages zawiera jeden wiersz na każdą stronę, która zakończyła się niepowodzeniem z powodu błędu 824, do limitu 1,000 wierszy. W poniższej tabeli przedstawiono błędy zarejestrowane w kolumnie event_type tabeli suspect_pages.

    Opis błędu event_type wartość
    Błąd 823 spowodowany błędem CRC systemu operacyjnego lub błędem 824 innym niż nieprawidłowa suma kontrolna lub rozdarta strona (na przykład nieprawidłowy identyfikator strony) 1
    Nieprawidłowa suma kontrolna 2
    Rozdarta strona 3
    Przywrócono (strona została przywrócona po oznaczeniu jej jako zła) 4
    Naprawiono (DBCC naprawiono stronę) 5
    Zwolniony przez DBCC 7

    Tabela suspect_pages zawiera również błędy przejściowe. Źródła błędów przejściowych obejmują błąd wejścia/wyjścia (na przykład odłączenie kabla) lub stronę, która tymczasowo przechodzi niepowodzenie powtarzanego testu sumy kontrolnej.

  • Jak Silnik Bazy Danych Aktualizuje Tabelę suspect_pages

    Silnik bazy danych wykonuje następujące działania w tabeli suspect_pages:

    • Jeśli tabela nie jest pełna, jest aktualizowana dla każdego błędu 824, aby wskazać, że wystąpił błąd, a licznik błędów jest zwiększany. Jeśli strona ma błąd po jego naprawieniu poprzez naprawę, przywrócenie lub dealokację, jej liczba number_of_errors jest zwiększana, a jej kolumna last_update jest aktualizowana.

    • Po naprawieniu strony na liście przez operację przywracania lub naprawy, operacja aktualizuje wiersz suspect_pages, aby wskazać, że strona została naprawiona (event_type = 5) lub przywrócona (event_type = 4).

    • Jeśli uruchomiono kontrolę DBCC, to sprawdzanie oznacza wszystkie strony wolne od błędów jako naprawione (event_type = 5) lub zdealokowane (event_type = 7).

  • Automatyczne Aktualizacje Tabeli suspect_pages

    Partner replikacji bazy danych lub replika Always On aktualizuje tabelę suspect_pages po próbie odczytania strony z pliku danych z jednego z następujących powodów.

    • Błąd 823, który jest spowodowany przez błąd CRC systemu operacyjnego.

    • Błąd 824 (uszkodzenie logiczne, takie jak rozdarta strona).

    Poniższe akcje automatycznie aktualizują również wiersze w tabeli suspect_pages.

    • DBCC CHECKDB REPAIR_ALLOW_DATA_LOSS aktualizuje tabelę suspect_pages, aby wskazać każdą stronę, które zostały wycofane z przydziału lub naprawione.

    • Pełna, plik lub strona RESTORE oznacza wpisy strony jako przywrócone.

    Następujące działania automatycznie usuwają wiersze z tabeli suspect_pages.

    • ALTER DATABASE REMOVE FILE

    • DROP DATABASE

  • Rola utrzymania administratora bazy danych

    Administratorzy baz danych są odpowiedzialni za zarządzanie tabelą, głównie przez usunięcie starych wierszy. Tabela suspect_pages jest ograniczona rozmiarem, i jeśli zostanie wypełniona, nowe błędy nie są rejestrowane. Aby zapobiec wypełnianiu tej tabeli, administrator bazy danych lub administrator systemu musi ręcznie wyczyścić stare wpisy z tej tabeli, usuwając wiersze. Dlatego zalecamy okresowe usuwanie lub archiwizowanie wierszy, które mają event_type ustawione jako przywrócone lub naprawione, albo wierszy ze starą wartością last_update.

    Aby monitorować aktywność w tabeli suspect_pages, możesz użyć klasy zdarzeń Database Suspect Data Page. Wiersze są czasami dodawane do tabeli suspect_pages z powodu błędów przejściowych. Jeśli jednak do tabeli jest dodawanych wiele wierszy, prawdopodobnie występuje problem z podsystemem we/wy. Jeśli zauważysz nagły wzrost liczby wierszy dodawanych do tabeli, zalecamy zbadanie możliwych problemów w podsystemie wejścia-wyjścia.

    Administrator bazy danych może również wstawiać lub aktualizować rekordy. Na przykład aktualizacja wiersza może być przydatna, gdy administrator bazy danych wie, że określona podejrzana strona jest rzeczywiście nienaruszona, ale chce zachować rekord na chwilę.

Bezpieczeństwo

Uprawnienia

Każda osoba mająca dostęp do msdb może odczytać dane w tabeli suspect_pages. Każda osoba z uprawnieniem UPDATE w tabeli suspect_pages może zaktualizować jego rekordy. Członkowie stałej roli bazy danych db_owner w msdb lub sysadmin stałej roli serwera mogą wstawiać, aktualizować i usuwać rekordy.

Korzystanie z programu SQL Server Management Studio

Aby zarządzać tabelą suspect_pages

  1. W Eksploratorze obiektów nawiąż połączenie z wystąpieniem silnika bazy danych programu SQL Server, rozwiń to wystąpienie, a następnie rozwiń Databases.

  2. Rozwiń węzeł System Databases, rozwiń węzeł msdb, rozwiń węzeł Tables, a następnie rozwiń węzeł System Tables.

  3. Rozwiń dbo.suspect_pages i kliknij prawym przyciskiem myszy Edytuj 200 pierwszych wierszy.

  4. W oknie zapytania edytuj, aktualizuj lub usuń żądane wiersze.

Korzystanie z Transact-SQL

Aby zarządzać tabelą suspect_pages

  1. Połącz się z silnikiem bazy danych.

  2. Na pasku Standardowa kliknij pozycję Nowe zapytanie.

  3. Skopiuj i wklej poniższe przykłady w oknie zapytania, a następnie kliknij pozycję Wykonaj. W tym przykładzie usunięto niektóre wiersze z tabeli suspect_pages.

-- Delete restored, repaired, or deallocated pages.  
DELETE FROM msdb..suspect_pages  
   WHERE (event_type = 4 OR event_type = 5 OR event_type = 7);  
GO  
  

Ten przykład zwraca błędne strony w tabeli suspect_pages.

-- Select nonspecific 824, bad checksum, and torn page errors.  
SELECT * FROM msdb..suspect_pages  
   WHERE (event_type = 1 OR event_type = 2 OR event_type = 3);  
GO  
  

Zobacz też

DROP DATABASE (Transact-SQL)
RESTORE (Transact-SQL)
BACKUP (Transact-SQL)
DBCC (Transact-SQL)
Przywracanie Stron (SQL Server)
suspect_pages (Transact-SQL)