DBCC CHECKTABLE (języka Transact-SQL)

Sprawdza spójność wszystkich stron i struktur tworzących tabela lub widok indeksowany.

Topic link iconKonwencje składni języka Transact-SQL

DBCC CHECKTABLE 
(
        table_name | view_name
    [ , { NOINDEX | index_id }
     |, { REPAIR_ALLOW_DATA_LOSS | REPAIR_FAST | REPAIR_REBUILD } 
    ] 
)
    [ WITH 
        { ALL_ERRORMSGS ]
          [ , EXTENDED_LOGICAL_CHECKS ] 
          [ , NO_INFOMSGS ]
          [ , TABLOCK ] 
          [ , ESTIMATEONLY ] 
          [ , { PHYSICAL_ONLY | DATA_PURITY } ] 
        }
    ]

Argumenty

  • table_name | view_name
    Jest to tabela lub indeksowane widoku, dla którego ma być uruchomienia sprawdzania integralność.Nazwy tabela lub widoku muszą być zgodne z zasadami identyfikatory.

  • NOINDEX
    Określa, że intensywne kontroli ponownego zbudowania indeksów nie klastrowanych tabel użytkownika nie należy wykonać.Zmniejsza to całkowity czas realizacji.NOINDEX nie wpływa na tabelach systemowych, ponieważ kontrole integralność są zawsze wykonywane na wszystkich indeksów tabela systemu.

  • index_id
    Jest numerem identyfikacyjnym (ID) indeksu dla której do uruchomienia sprawdzania integralność.Jeśli index_id jest określony, CHECKTABLE DBCC uruchamia testy integralność tylko dla tego indeksu, łącznie ze stosu lub indeks klastrowany.

  • REPAIR_ALLOW_DATA_LOSS | REPAIR_FAST | REPAIR_REBUILD
    Określa, że CHECKTABLE DBCC naprawy znalezionych błędów.Aby skorzystać z opcji naprawy, baza danych musi być tryb jednego użytkownika.

    • REPAIR_ALLOW_DATA_LOSS
      Próbuje naprawić wszelkie zgłoszone błędy.Te naprawy może spowodować utratę danych.

    • REPAIR_FAST
      Składnia jest utrzymywana zgodność z poprzednimi wersjami.Żadne naprawy akcje są wykonywane.

    • REPAIR_REBUILD
      Wykonuje naprawy o możliwości utraty danych.Może to dotyczyć szybkiej naprawy, takich jak naprawianie brakuje wierszy indeksami nieklastrowanymi i więcej naprawy czasochłonne, takie jak przebudowywanie indeksu.

      REPAIR_REBUILD nie naprawić błędy FILESTREAM danych.

    Uwaga

    Za pomocą opcji naprawy tylko w ostateczności.Aby naprawić błędy, zaleca się przywrócenie z kopia zapasowa.Operacje naprawy nie rozważyć żadnego ograniczenia, może istnieć na lub między tabelami.Jeśli określona tabela uczestniczy w jednej lub więcej ograniczeń, zaleca się systemem CHECKCONSTRAINTS DBCC po operacji naprawy.Jeśli musisz użyć REPAIR, CHECKTABLE DBCC powinny być uruchamiane bez opcji naprawy, aby znaleźć używany poziom naprawy.Jeśli zamierzasz używać poziom REPAIR_ALLOW_DATA_LOSS, zaleca się wykonanie tworzyć kopię zapasową zapasowej bazy danych przed uruchomieniem CHECKTABLE DBCC przy użyciu tej opcji.

  • ALL_ERRORMSGS
    Wyświetla nieograniczoną liczbę błędów.W SQL Server 2008 Dodatek usługa Pack 1 (SP1), wszystkie komunikaty o błędach są domyślnie wyświetlane. Określanie lub pomijanie tej opcji nie powoduje żadnych zmian.We wcześniejszych wersjach SQL Server (z wyjątkiem SQL Server 2005 Dodatek SP3), jeżeli nie określono ALL_ERRORMSGS wyświetlane są tylko pierwszy błąd 200 wiadomości dla każdego obiektu.

  • EXTENDED_LOGICAL_CHECKS
    Jeśli poziom zgodności jest 100)SQL Server 2008) lub wyższym, sprawdza spójność logicznych na widok indeksowany, indeksy XML i przestrzennej indeksów, w przypadku, gdy obecna.

    Aby uzyskać więcej informacji zobacz temat "Wykonywanie logicznych spójności testy na indeksy" w sekcji "Uwagi" w dalszej części tego tematu.

  • NO_INFOMSGS
    Pomija wszystkie komunikaty informacyjne.

  • TABLOCK
    Powoduje, że CHECKTABLE DBCC uzyskać blokada udostępnionego tabela zamiast migawka wewnętrznej bazy danych.TABLOCK spowoduje, że CHECKTABLE DBCC szybciej uruchamiać na tabela obciążony, ale zmniejsza współbieżność dostępne w tabela CHECKTABLE DBCC jest uruchomiona.

  • ESTIMATEONLY
    Wyświetla szacowaną ilość tempdb miejsce potrzebne do uruchomienia CHECKTABLE DBCC ze wszystkich innych określonych opcji.

  • PHYSICAL_ONLY
    Ogranicza sprawdzania integralność struktury fizycznej strona, nagłówki rekordów i fizyczną strukturę drzewa B.Zaprojektowany z myślą o zapewnieniu małych narzutów sprawdzenie spójności fizyczne tabela, to sprawdzenie może także wykryć poszarpane stron i typowych błędów sprzętowych, które mogą wpłynąć na dane.Pełne uruchomienie CHECKTABLE DBCC może trwać znacznie dłużej niż to było we wcześniejszych wersjach.Dzieje się tak z następujących powodów:

    • Kontrole logiczne są szersze.

    • Niektóre z podstawowych struktur mają być sprawdzane są bardziej złożone.

    • Aby uwzględnić nowe funkcje zostały wprowadzone szereg testów nowe.

    W związku z tym, za pomocą opcji PHYSICAL_ONLY może spowodować, że znacznie krótsze wykonywania-czas dla CHECKTABLE DBCC na dużych tabel i w związku z tym zaleca się częste stosowanie w systemach produkcyjnych.Zaleca się wciąż pełnego uruchomienia programu DBCC CHECKTABLE wykonywane co pewien czas.Częstotliwość tych uruchamia zależy od czynników, które są specyficzne dla poszczególnych firm i w środowisku produkcyjnym.PHYSICAL_ONLY zawsze pociąga za sobą NO_INFOMSGS i nie jest dozwolone z jednej z opcji naprawy.

    Uwaga

    Określanie PHYSICAL_ONLY powoduje, że CHECKTABLE DBCC pominąć wszystkie sprawdza FILESTREAM danych.

  • DATA_PURITY
    Powoduje, że CHECKTABLE DBCC sprawdzić, czy wartości kolumna, które nie są prawidłowe lub limit czasu z zakres w tabela.Na przykład CHECKTABLE DBCC wykryje kolumny z wartościami data i godziny, które są większe niż lub mniejsze niż dopuszczalny zakres dla datetime Typ danych; lub decimal lub typ danych numerycznych zbliżenie kolumny z wartościami skalę lub dokładności, które nie są prawidłowe.

    Dla baz danych utworzonych w SQL Server 2005 a później, kontrole integralność wartości kolumna są domyślnie włączone i nie wymagają opcji DATA_PURITY. W przypadku uaktualnienia ze starszych wersji baz danych SQL Server, aby znaleźć i poprawić błędy w określonej tabela mogą być używane DBCC CHECKTABLE WITH DATA_PURITY; jednak kontroli wartości kolumna w tabela nie są włączone domyślnie, dopóki DBCC CHECKDB WITH DATA_PURITY uruchomieniu błąd wolnego w bazie danych. Potem CHECKDB DBCC i CHECKTABLE DBCC sprawdzania integralność wartość kolumna domyślnie.

    Nie można naprawić błędy sprawdzania poprawności raportowane przez tę opcję za pomocą opcji naprawy DBCC.Aby uzyskać informacje na temat ręcznego korygowania tych błędów zobacz artykuł bazy wiedza Microsoft wiedza Base 923247: Rozwiązywanie problemów błąd DBCC 2570 w programie SQL Server 2005.

    Jeżeli określono PHYSICAL_ONLY, nie są wykonywane kontrole integralność kolumna.

Remarks

Uwaga

Aby przeprowadzić CHECKTABLE DBCC w każdej tabela w bazie danych, należy użyć DBCC CHECKDB.

Dla określonej tabela CHECKTABLE DBCC sprawdza, czy dla następujących elementów:

  • Indeks, w wierszu, LOB i przepełnienia wiersza stron danych są poprawnie połączone.

  • Indeksy są w ich właściwy kolejność sortowania.

  • Wskaźniki są zgodne.

  • Dane znajdujące się na każdej stronie ma sens, uwzględnione kolumny obliczane.

  • strona przesunięcia są uzasadnione.

  • Każdy wiersz w tabela bazowa ma odpowiedni wiersz w każdym indeks nieklastrowany i na odwrót.

  • Każdy wiersz w tabela partycjonowana lub indeks znajduje się w poprawnej partycji.

  • Spójność poziom łącze między systemem plików a tabelą przy zapisywaniu varbinary(max) dane w systemie plików przy użyciu FILESTREAM.

Wykonywanie logicznych spójności testy na indeksy

Sprawdzanie na indeksy spójności logiczne zmienia się zgodnie z poziomem zgodności bazy danych, w następujący sposób:

  • Jeśli poziom zgodności jest 100)SQL Server 2008) lub nowszej:

    • Pod warunkiem, że nie określono NOINDEX, CHECKTABLE DBCC wykonuje zarówno fizyczne i logiczne spójności sprawdza, czy w jednej tabela i wszystkich jego ponownego zbudowania indeksów nie klastrowanych.Jednak indeksy XML, przestrzennej indeksy i spójność fizycznych tylko widoki indeksowane są sprawdzane domyślnie.

    • Jeżeli określono EXTENDED_LOGICAL_CHECKS WITH, logiczne są sprawdzane na widok indeksowany, indeksy XML i przestrzennej indeksów, których obecnie.Domyślnie spójność fizyczne są sprawdzane przed sprawdzania spójności logiczne.Jeśli określony jest również NOINDEX, wykonywane są tylko testy logiczne.

      Te logiczne spójności sprawdza między domenami wyboru tabela indeks wewnętrznego obiektu indeksu z tabela użytkownika, która odwołuje się do.Aby znaleźć wiersze skrajne, kwerendę wewnętrznej jest skonstruowany do wykonywania pełnej przecięcia wewnętrznego i tabele użytkowników.Tę kwerendę mogą mieć bardzo duże wpływ na wydajność i nie można śledzić jego postęp.Dlatego zaleca się, aby określić WITH EXTENDED_LOGICAL_CHECKS tylko wtedy, gdy użytkownik podejrzewa, że indeks problemy, które są wpływu na to fizyczne uszkodzenie lub jeśli zostały wyłączone poziom strona sum kontrolnych, a użytkownik podejrzewa, że uszkodzenie sprzętu poziom kolumna.

    • Jeżeli indeks jest filtrowany indeksu, CHECKDB DBCC wykonuje sprawdzania spójności, aby zweryfikować, że pozycje indeksu spełniają predykat filtru.

  • Jeśli poziom zgodności wynosi 90 lub mniej, pod warunkiem, że nie określono NOINDEX, CHECKTABLE DBCC sprawdza zarówno fizyczne i logiczne spójności w pojedynczej tabela lub widok indeksowany i wszystkich jego nieklastrowany i indeksów XML.Przestrzennej indeksy nie są obsługiwane.

Aby dowiedzieć się poziom zgodności bazy danych

Wewnętrzny migawka bazy danych

DBCC CHECKTABLE używa wewnętrznego migawka bazy danych zapewnienie spójności transakcyjnej, które musi mieć do wykonywania tych kontroli.Aby uzyskać więcej informacji zobacz Opis odstępem rozmiary plików w migawek bazy danychi w sekcji "DBCC wewnętrznej bazy danych migawka obciążenie" DBCC (języka Transact-SQL).

Jeśli nie można utworzyć migawkę lub TABLOCK jest określony, CHECKTABLE DBCC pobrania, udostępnione blokada tabela uzyskanie wymaganych spójności.

Uwaga

Jeżeli wykonywane jest CHECKTABLE DBCC tempdb, musi go nabyć Blokada udostępnionych tabela. Jest to, ponieważ ze względu na wydajność, nie są dostępne na bazę danych migawek tempdb. Oznacza to, że nie można uzyskać wymaganej spójności transakcyjnej.

Sprawdzanie i naprawianie FILESTREAM danych

Po włączeniu FILESTREAM dla bazy danych i tabela można opcjonalnie przechowywać varbinary(max) binarne dużych obiektów (bloków BLOB) w systemie plików. Używając CHECKTABLE DBCC dla tabela, która przechowuje bloków BLOB w systemie plików, DBCC sprawdza spójność poziom łącze między systemem plików a bazą danych.

Na przykład, jeśli tabela zawiera varbinary(max) kolumna, która korzysta z atrybut FILESTREAM, CHECKTABLE DBCC sprawdzi jest mapowanie typu jeden-do-jednego między katalogów systemu plików i plików i wierszy, kolumn i wartości kolumna. DBCC CHECKTABLE można naprawić uszkodzenie, jeśli określono opcję REPAIR_ALLOW_DATA_LOSS.Aby naprawić uszkodzenie FILESTREAM, DBCC usunie wszystkie wiersze tabela, które nie zawierają danych systemu plików i spowoduje usunięcie wszystkich katalogów i plików, które nie mapowane na wartość wiersza, kolumna lub kolumn tabela.

Sprawdzanie obiekty w równoległy

Domyślnie CHECKTABLE DBCC wykonuje sprawdzanie równoległych obiektów.Stopień proste jest automatycznie określana przez procesor kwerend.Maksymalny stopień proste jest skonfigurowany w taki sam sposób co kwerendy równoległych.Aby ograniczyć maksymalną liczbę procesorów dostępnych sprawdzania DBCC, należy użyć sp_configure. Aby uzyskać więcej informacji zobaczmax degree of parallelism Option.

Sprawdzanie równoległych można wyłączyć za pomocą flagi śledzenia 2528.Aby uzyskać więcej informacji zobaczFlagi śledzenia (Transact-SQL).

Uwaga

Podczas operacji CHECKTABLE DBCC bajtów, które są przechowywane kolumna zamówione bajtu typ zdefiniowany przez użytkownika muszą być równe serializacji kalkulowanej wartości typ zdefiniowany przez użytkownika.Jeśli nie jest to PRAWDA, procedura CHECKTABLE DBCC zgłosi błąd zgodności.

Opis komunikatów o błędach DBCC

Po zakończeniu działania polecenia DBCC CHECKTABLE jest zapisywany komunikat SQL Server Dziennik błędów. Jeśli polecenie DBCC pomyślnie wykonuje, wiadomości oznacza pomyślne zakończenie i czas, który uruchomił polecenie.Jeśli polecenie DBCC zatrzyma się przed zakończeniem sprawdzania z powodu błędu, wiadomości wskazuje polecenie zostało zakończone, wartość stan i czas uruchomienia polecenia.W poniższej tabela wymieniono i opisano wartości stanu, które mogą być dołączone do wiadomości.

Stan

Description

0

Numer błędu 8930 był uruchamiany.Oznacza to uszkodzenie metadane, powodujące polecenie DBCC, aby zakończyć.

1

Numer błędu 8967 był uruchamiany.Wystąpił błąd wewnętrzny DBCC.

2

Wystąpił błąd podczas trybu awaryjnego naprawiania bazy danych.

3

Oznacza to uszkodzenie metadane, powodujące polecenie DBCC, aby zakończyć.

4

Wykryto naruszenie zasad dostępu lub zapewnienia.

5

Wystąpił nieznany błąd, które polecenie DBCC zakończone.

Raportowanie błędów

Plik mini-automatyczna kopia zapasowa (SQLDUMPNNNNtworzenia w .txt)SQL Server DZIENNIK katalogu za każdym razem, gdy CHECKTABLE DBCC wykryje błąd uszkodzenia. Gdy dane użycia funkcji kolekcja i raportowanie błędów funkcji są włączone dla wystąpienie SQL Server, plik jest automatycznie przesyłane dalej do Microsoft. Zebrane dane są używane do poprawienia SQL Server funkcje.

Plik automatyczna kopia zapasowa zawiera wyniki polecenia DBCC CHECKTABLE i dodatkowe dane wyjściowe diagnostycznych.Plik ograniczył listach arbitralnej kontroli dostępu (DACL).Dostęp jest ograniczony do SQL Server usługa kont i członkowie sysadmin Rola. Domyślnie sysadmin Rola zawiera wszystkich członków grupy BUILTIN\Administratorzy systemu Windows oraz do lokalnej grupy Administratorzy. Polecenie DBCC nie się niepowodzeniem, gdy proces zbierania danych nie powiodło się.

Rozwiązywanie błędów

DBCC CHECKTABLE raportuje wszystkie błędy, zaleca się przywrócenie bazy danych z kopia zapasowa bazy danych zamiast z REPAIR z jedną z opcji naprawy.Jeśli kopii zapasowych, systemem REPAIR może poprawiać błędy, które zostały zgłoszone.Określono opcję naprawy do używania na końcu listy zgłoszone błędy.Jednak ten poprawianie błędów przy użyciu opcji REPAIR_ALLOW_DATA_LOSS może wymagać niektórych stron i w związku z tym dane, można usunąć.

Naprawa może być wykonana w transakcji użytkownika, aby zezwolić użytkownikowi na wycofać zmiany, które zostały wprowadzone.Jeśli są przywracane naprawy, baza danych będzie nadal zawierał błędy i musi zostać przywrócony z kopia zapasowa.Po zakończeniu naprawy wszystkich tworzyć kopię zapasową zapasowej bazy danych.

Zestawy wyników

DBCC CHECKTABLE zwraca następujący zestaw wyników.Ten sam zestaw wyników jest zwracana, jeśli zostanie określony tylko nazwę tabela lub jedną z opcji.

DBCC results for 'HumanResources.Employee'.
There are 288 rows in 13 pages for object 'Employee'.
DBCC execution completed. If DBCC printed error messages, contact your system administrator.

DBCC CHECKTABLE zwracane, jeśli określono opcję ESTIMATEONLY ustawić następujące wyniki:

Estimated TEMPDB space needed for CHECKTABLES (KB) 
-------------------------------------------------- 
21
(1 row(s) affected)
DBCC execution completed. If DBCC printed error messages, contact your system administrator.

Uprawnienia

Użytkownik musi własnej tabela lub być członkiem sysadmin ustala rolę serwera db_owner stałe rola bazy danych, lub db_ddladmin stała rola bazy danych.

Przykłady

A.Sprawdzanie określonej tabela

W poniższym przykładzie sprawdza spójność strona danych HumanResources.Employee Tabela w AdventureWorks Baza danych.

B.Sprawdzania niskiego obciążenia tabela

W poniższym przykładzie wykonuje sprawdzanie niskie narzutów Employee Tabela w AdventureWorks Baza danych.

C.Sprawdzanie określonego indeksu

W poniższym przykładzie sprawdza określonego indeksu uzyskane po zalogowaniu się do sys.indexes.

Historia zmian

Microsoft Learning

W definicji ALL_ERRORMSGS opisane nowe funkcje w SQL Server 2008 Z DODATKIEM SP1.