How to Run DBCC CHECKDB to Check SQL Database Integrity

Database Console Command CHECKDB (DBCC CHECKDB)is used to check the integrity (physical & logical) of objects in a SQL Server database.The command is supported in databases that contain memory-optimized tables but the validation is only supported in disk-based tables. Opcja DBCC repair jest niedostępna w tabelach zoptymalizowanych pamięciowo i dlatego prowadzi do konieczności regularnego wykonywania kopii zapasowych bazy danych.W przypadku wystąpienia problemu w tabeli zoptymalizowanej pamięciowo, dane mogą być przywrócone z ostatniej wykonanej kopii zapasowej.

Różne operacje wykonywane przez CHECKDB to:

  • DBCC CHECKALLOC wykonanie na bazie danych SQL.
  • DBCC CHECKTABLE wykonanie na każdej tabeli i widoku bazy danych SQL.
  • DBCC CHECKCATALOG wykonanie na bazie danych SQL.
  • Weryfikacja zawartości w indeksowanym widoku bazy danych.
  • Weryfikacja spójności na poziomie łącza wśród katalogów plików i metadanych tabel.
  • Weryfikacja danych brokera usług.

Ponieważ DBCC CHECKDB uruchamia wszystkie inne polecenia, nie będzie konieczne osobne uruchamianie poleceń CHECKALLOC, CHECKTABLE i CHECKCATALOG.

Składnia DBCC CHECKDB

Argumenty użyte w powyższej składni oznaczają co następuje:

database_name | database_id | 0 Jest to nazwa bazy danych.W przypadku, gdy nazwa nie jest podana lub napisane jest tylko 0, używana jest bieżąca baza danych. NOINDEX Określa, że sprawdzanie integralności nieklastrowanych tabel indeksowych nie powinno być wykonywane. Składnia ta nie ma wpływu na dane znajdujące się w tabelach. REPAIR_ALLOW_DATA_LOSS Składnia naprawia błędy wykryte w bazie danych, co może prowadzić do utraty niektórych danych.

Uwaga: Ta składnia jest wspierana przez Microsoft i nie za każdym razem okazuje się być idealnym rozwiązaniem do przywrócenia bazy danych do dobrego stanu fizycznego. Dzieje się tak dlatego, że usuwa ona całe dane, które okazały się uszkodzone i może prowadzić do większej utraty danych, niż było to pierwotnie zrobione z bazą danych. Dlatego powinna być przyjęta jako ostateczność.

REPAIR_FAST Ten argument utrzymuje tylko zgodność wsteczną i nie wykonuje żadnych napraw. REPAIR REBUILD Argument ten zawiera szybszy proces naprawy, który nie stwarza zagrożenia utraty danych. ALL_ERRORMSGS Pokazuje wszystkie błędy, które zostały wygenerowane we wszystkich obiektach. Włączenie lub wyłączenie tej składni nie będzie miało żadnego efektu, ponieważ komunikaty o błędach są zazwyczaj sortowane według ID obiektu. Maksymalna liczba generowanych komunikatów o błędach może wynosić do 1000. EXTENDED_LOGICAL_CHECKS Ten argument uruchamia sprawdzanie spójności logicznej widoków i indeksów, tylko jeśli poziom zgodności wynosi 100. NO_INFOMSGS Usuwa wszystkie komunikaty informacyjne. TABLOCK Ta składnia powoduje uzyskanie wyłącznej blokady bazy danych i zwiększa szybkość działania DBCC CHECKDB na bazie danych w okresach dużego obciążenia. Zmniejsza ona jednak dostępność bazy danych dla operacji współbieżnych. ESTIMATEONLY Określa lub szacuje ilość miejsca potrzebną do wykonania polecenia CHECKDB. PHYSICAL_ONLY Ograniczenie do sprawdzania tylko fizycznej struktury bazy danych. Krótkiemu sprawdzeniu fizycznej bazy danych towarzyszy wykrycie rozdartych stron, awarii oraz typowych problemów, z którymi borykają się użytkownicy. Czystość danych Ta składnia sprawdza wartości kolumn, które są poza zakresem lub są nieprawidłowe. Sprawdzanie integralności wartości kolumn jest domyślnie włączone i nie wymaga składni DATA_PURITY.

Things To Be Kept In Mind

  • Wyłączone indeksy nie mogą być sprawdzane przez DBCC CHECKDB.
  • Typy zdefiniowane przez użytkownika i typy uporządkowane bajtowo muszą być serializowane, jeśli ma być wykonane DBCC CHECKDB. W każdym innym przypadku wystąpi błąd 2537.
  • DBCC CHECKDB nie może być bezpośrednio uruchomione na bazie danych Resource, ponieważ można ją modyfikować tylko w trybie pojedynczym.

Komunikaty o błędach generowane przez DBCC CHECKDB

Gdy polecenie CHECKDB kończy działanie, do dziennika błędów SQL zapisywany jest komunikat. W przypadku powodzenia, generowany jest komunikat informujący o powodzeniu oraz całkowity czas działania polecenia. W przypadku niepowodzenia, proces zostaje przerwany z powodu wystąpienia jakiegoś błędu, na co wskazuje komunikat. Różne wartości stanu reprezentujące komunikat o błędzie to:

Raport o błędzie

W przypadku wykrycia uszkodzenia przez polecenie CHECKDB, w katalogu log serwera SQL tworzony jest plik zrzutu o nazwie SQLDUMPNNNN.txt. W przypadku, gdy w SQL włączone są funkcje Zbieranie danych użytkowych i Raportowanie błędów, raport o błędach jest wysyłany do firmy Microsoft w celu poprawy sytuacji.

Przywracanie bazy danych

W scenariuszu generowania błędów w serwerze SQL zaleca się przywrócenie bazy danych z ostatniej utworzonej kopii zapasowej zamiast naprawiania bazy danych.W przypadku, gdy nie istnieje kopia zapasowa, można skorzystać z opcji naprawy. Ale wybierając naprawę z REPAIR_ALLOW_DATA_LOSS może prowadzić do usunięcia niektórych danych.

Alternatywne rozwiązanie dla odzyskiwania bazy danych

Podstawowo polecenie DBCC CHECKDB sprawdza spójność bazy danych, w tym fizyczne lub logiczne. Polecenie to sprawdzić strony, indeks i niektóre inne składniki bazy danych serwera SQL, ale w niektórych punktach krytycznych to zdecydować, aby odmówić odzyskania bazy danych SQL. W przypadku braku kopii zapasowej bazy danych serwera MS SQL, wybrane opcje naprawy mogą usunąć znaczną ilość danych.Dlatego też, w celu odzyskania bazy danych bez naruszania integralności danych, można zdecydować się na rozwiązanie odzyskiwania bazy danych Microsoft SQL. Gwarantują one całkowite odzyskanie bazy danych bez usuwania jakiejkolwiek ilości danych.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.