Udostępnij za pośrednictwem


DBCC CHECKTABLE (Transact-SQL)

Sprawdza integralność stron i struktur, które tworzą tabela lub indeksowany widok.

Ikona łącza do tematuJęzyka Transact-SQL składni konwencje

Składnia

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 tabela lub indeksowany widok do uruchomienia sprawdzania integralność .Nazwy tabeli lub widoku muszą być zgodne z zasadami identyfikatorów.

  • NOINDEX
    Określa intensywnych kontroli ponownego zbudowania indeksów dla tabel użytkownika nie należy wykonać.Zmniejsza ogólny wykonanie czas.NOINDEX nie wpływa na tabele systemowe , ponieważ sprawdzanie integralność są zawsze wykonywane na wszystkie indeksy tabela systemowa .

  • index_id
    To numer identyfikacyjny (ID) indeksu dla którego uruchomienia sprawdzania integralność .Jeśli index_id określono DBCC CHECKTABLE Uruchamia sprawdzanie integralność tylko w pozycji tego indeksu wraz ze stosu lub indeks klastrowany.

  • REPAIR_ALLOW_DATA_LOSS | REPAIR_FAST | REPAIR_REBUILD
    Określa, że DBCC CHECKTABLE naprawić błędy znalezione.Aby użyć opcji naprawy, baza danych musi być w tryb jednego użytkownika.

    • REPAIR_ALLOW_DATA_LOSS
      Próbuje naprawić wszystkich błędów.Te naprawy może spowodować utratę danych.

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

    • REPAIR_REBUILD
      Dokonuje napraw, które mają możliwości utraty danych.Może to dotyczyć szybkiej naprawy, takich jak naprawianie brakujących wierszy w indeksami nieklastrowanymi i więcej czas-używające naprawy, takich jak odbudowanie indeksu.

      REPAIR_REBUILD nie naprawia błędy danych FILESTREAM.

    Ostrzeżenie

    Użyj opcji naprawy tylko w ostateczności.Aby naprawić błędy, zaleca się przywrócenie z kopia zapasowa.Operacje naprawy uważa ograniczenia, które mogą istnieć na lub między tabelami.Określona tabela jest zaangażowany w jednej lub więcej ograniczeń, zaleca się z systemem DBCC CHECKCONSTRAINTS po operacji naprawiania.Jeśli musisz użyć naprawy, uruchom DBCC CHECKTABLE bez opcji naprawy znaleźć naprawy poziom używania.Jeśli zamierzasz używać REPAIR_ALLOW_DATA_LOSS poziom, zaleca się tym możesz tworzyć kopię zapasową bazy danych przed uruchomieniem DBCC CHECKTABLE przy użyciu tej opcji.

  • ALL_ERRORMSGS
    Wyświetla nieograniczoną liczbę błędów.Domyślnie są wyświetlane wszystkie komunikaty o błędach.Określanie lub pominięcie tej opcji nie ma znaczenia.

  • EXTENDED_LOGICAL_CHECKS
    Jeśli poziom zgodności jest 100 (SQL Server 2008) lub wyższym, sprawdza spójność logiczne indeksowany widok, indeksy XML i indeksy przestrzenne, gdzie obecnej.

    Aby uzyskać więcej informacji zobacz "Wykonuje logiczną spójności sprawdza na indeksy" w "Uwagi" sekcja w dalszej części tego tematu.

  • NO_INFOMSGS
    Pomija wszystkie komunikaty informacyjne.

  • TABLOCK
    Powoduje, że DBCC CHECKTABLE uzyskaćblokada udostępnionego tabelazamiast korzystania z wewnętrznego migawka bazy danych. TABLOCK spowoduje, że DBCC CHECKTABLE szybsze działanie w tabela pod dużym obciążeniem, ale zmniejsza współbieżność dostępne w tabela jest uruchomiona DBCC CHECKTABLE.

  • ESTIMATEONLY
    Wyświetla szacowaną liczbę tempdb miejsca wymaganego do uruchomienia DBCC CHECKTABLE z wszystkich innych określonych opcji.

  • PHYSICAL_ONLY
    Ogranicza sprawdzania integralność fizycznej struktury strona, nagłówki rekordu i fizyczną strukturę drzewa B.Opracowane w celu zapewnienia małych narzutów kontroli fizycznej spójność tabela, tego wyboru można również wykrywać podarte stron i wspólne awarie sprzętowe, które mogą wpłynąć na dane.Pełne uruchomienia DBCC CHECKTABLE może trwać znacznie dłużej niż we wcześniejszych wersjach.To zachowanie występuje, ponieważ z następujących powodów:

    • Kontrole logiczne są bardziej wyczerpujące.

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

    • Aby uwzględnić nowe funkcje zostały wprowadzone wiele nowych kontroli.

    W związku z tym za pomocą opcji PHYSICAL_ONLY może powodować znacznie krótszy Uruchomczas dla DBCC CHECKTABLE na dużych tabel i dlatego zaleca się częste stosowanie w systemach produkcyjnych.Nadal zaleca się okresowo wykonać pełne uruchomienia DBCC CHECKTABLE.Częstotliwość tych uruchamia zależy od czynników specyficznych dla poszczególnych firm i w środowiskach produkcyjnych.PHYSICAL_ONLY zawsze oznacza NO_INFOMSGS i nie jest dozwolone przy użyciu dowolnej opcji naprawy.

    Ostrzeżenie

    Określanie przyczyny DBCC CHECKTABLE pominąć wszystkie PHYSICAL_ONLY sprawdza danych FILESTREAM.

  • DATA_PURITY
    Powoduje, że DBCC CHECKTABLE sprawdzenie tabela wartości kolumna , które nie są prawidłowe lub out-o-zakres.Na przykład DBCC CHECKTABLE wykryje kolumny z wartościami data i czas , które są większe niż lub równa dopuszczalnego zakres datetime typu danych; lub decimal lub typ danych numeric zbliżenie kolumny z wartościami skali lub precision, które nie są prawidłowe.

    Dla baz danych utworzonych w SQL Server 2005 i nowsze, kolumna-sprawdza wartość integralność są domyślnie włączone i nie wymagają opcji DATA_PURITY.Uaktualnienia ze starszych wersji baz danych SQL Server, użyj DBCC CHECKTABLE Z DATA_PURITY, aby znaleźć i poprawić błędy w określonej tabela; jednak kolumna-kontroli wartości w tabela nie są włączone domyślnie, dopóki DBCC CHECKDB Z DATA_PURITY został uruchomiony bez błędów w bazie danych.Po to, zaznacz kolumnaDBCC CHECKDB i DBCC CHECKTABLE-wartość integralność domyślnie.

    Nie można naprawić błędy sprawdzania poprawności raportowane przez tę opcję za pomocą opcji naprawy DBCC.Aby uzyskać informacje dotyczące ręcznego poprawiania tych błędów Zobacz bazy wiedzy Knowledge Base w artykuł 923247: Rozwiązywanie problemów błąd DBCC 2570 w SQL Server 2005.

    Jeżeli określono PHYSICAL_ONLY kolumna- sprawdzanieintegralność nie są wykonywane.

Uwagi

Ostrzeżenie

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

Dla określonej tabelaDBCC CHECKTABLE sprawdza następujące czynności:

  • Indeks, w wierszu, LOB i wiersze danych przekraczające rozmiar strony strony są poprawnie połączone.

  • Indeksy są w kolejność sortowania.

  • Wskaźniki są spójne.

  • Dane na każdej strona jest uzasadnione, dołączone kolumny obliczane.

  • Strony przesunięcia są uzasadnione.

  • Każdy wiersz w tabela bazowa ma pasującego wiersza w każdej indeks nieklastrowanyi na odwrót.

  • Każdy wiersz w tabela partycjonowana lub indeksu jest poprawną partycję.

  • Łącze -poziom spójności systemu plików i tabela podczas przechowywania varbinary(max) danych w systemie plików przy użyciu FILESTREAM.

Wykonuje logiczną spójność kontrole indeksów

Sprawdzanie na indeksy logiczne spójności zależy zgodnie z poziom zgodności bazy danych:

  • Jeśli poziom zgodności jest 100 (SQL Server 2008) lub wyższej:

    • Jeśli nie określono NOINDEX DBCC CHECKTABLE sprawdza zarówno spójność fizycznych i logicznych na pojedynczej tabela i wszystkich jego zbudowania indeksów nie klastrowanych.Jednak indeksy XML, indeksy przestrzenne i spójność fizycznych tylko widoki indeksowane są sprawdzane domyślnie.

    • Jeżeli określono Z EXTENDED_LOGICAL_CHECKS logiczne są sprawdzane na indeksowany widok, indeksy XML i indeksy przestrzenne, gdzie przedstawia.Domyślnie spójność fizycznych są sprawdzane przed sprawdzania spójności logicznych.Jeśli określony jest również NOINDEX, wykonywane są tylko kontrole logiczne.

      Te logiczną spójność między domenami wyboru indeks wewnętrzny tabela indeks obiektu użytkownika tabela , która odwołuje się do.Aby znaleźć wiersze skrajne, wewnętrznego kwerendy jest skonstruowane, aby wykonać pełny przecięcia wewnętrznego i tabele użytkowników.Uruchomienie tej kwerendy mogą mieć bardzo duży wpływ na wydajność i nie można śledzić postęp.Dlatego zaleca się, aby określić Z EXTENDED_LOGICAL_CHECKS tylko wtedy, gdy podejrzewasz, że problemy indeksu, które są niezwiązane fizyczne uszkodzenie lub jeśli strona- sum kontrolnychpoziom zostały wyłączone i podejrzewasz, że kolumna-poziom uszkodzenie sprzętu.

    • Jeżeli indeks jest indeksem przefiltrowane, DBCC CHECKDB sprawdza spójność zweryfikować, że pozycje indeksu spełniają predykat filtru.

  • Jeśli poziom zgodności jest 90 lub mniej, chyba że określono NOINDEX DBCC CHECKTABLE wykonuje sprawdzania spójności fizycznej i logicznej na pojedynczej tabela lub indeksowany widok i wszystkie jego nieklastrowany i indeksy XML.Przestrzennej indeksy nie są obsługiwane.

Aby dowiedzieć się, poziom zgodności bazy danych

Migawki wewnętrznej bazy danych

DBCC CHECKTABLE używa wewnętrznego migawka bazy danych w celu zapewnienia spójności transakcyjnej, który musi mieć do wykonywania tych kontroli.Aby uzyskać więcej informacji, zobacz Opis Sparse rozmiary plików w bazie danych migawek i "DBCC wewnętrznej bazy danych migawki użycia", sekcja w DBCC (Transact-SQL).

Jeśli nie można utworzyć migawka lub określonym TABLOCK, DBCC CHECKTABLE nabywa udostępnionego tabela blokada uzyskać wymaganą konsystencję.

Ostrzeżenie

Jeśli uruchamiana DBCC CHECKTABLE tempdb, muszą nabyć udostępnionego tabela blokada.To, ponieważ ze względu na wydajność bazy danych migawek nie są dostępne na tempdb.Oznacza to, nie można uzyskać wymaganej spójności transakcyjnej.

Sprawdzanie i naprawianie FILESTREAM danych

Po włączeniu FILESTREAM dla bazy danych i tabelamożna opcjonalnie przechowywać varbinary(max) dużych obiektów binarnych (bloków BLOB) w systemie plików.Po użyciu DBCC CHECKTABLE w tabela , która przechowuje bloków BLOB w systemie plików, DBCC sprawdza łącze -poziom spójności systemu plików i bazy danych.

Na przykład, jeśli tabela zawiera varbinary(max) kolumna używające FILESTREAM atrybutDBCC CHECKTABLE sprawdzi się mapowanie jeden do jednego między katalogów systemu plików oraz pliki i tabela wiersze, kolumny 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 są mapowane na wartość wiersza, kolumnalub kolumna tabela .

Sprawdzanie obiektów równolegle

Domyślnie DBCC CHECKTABLE wykonuje równoległe sprawdzanie obiektów.Stopień równoległości prostych jest automatycznie określany przez procesor kwerend.Maksymalny stopień równoległości prostych jest skonfigurowany w taki sam sposób jak równoległych kwerend.Aby ograniczyć maksymalną liczbę procesorów dostępnych dla sprawdzenia DBCC, użyj sp_configure.Aby uzyskać więcej informacji, zobacz maksymalny stopień równoległości prostych opcji.

Równoległe sprawdzanie można wyłączyć za pomocą flagi śledzenia 2528.Aby uzyskać więcej informacji, zobacz Flagi śledzenia (Transact-SQL).

Ostrzeżenie

Podczas operacji DBCC CHECKTABLE bajtów, które są przechowywane w zamówione bajt typ zdefiniowany przez użytkownika kolumna musi być równa obliczonej serializacji wartości typ zdefiniowany przez użytkownika .Jeśli nie jest to prawdą, rutynowe DBCC CHECKTABLE zgłosi błąd spójnoś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 wykona wiadomości wskazuje pomyślne zakończenie i czas uruchomienia polecenia.Polecenie DBCC zatrzymuje się przed zakończeniem kontroli z powodu błędu, komunikat wskazuje, polecenie zostało zakończone, wartość stanu i czas , który uruchomił polecenie.W poniższej tabela wymieniono i opisano wartości stanu, które mogą być dołączone do wiadomości.

Stan

Opis

0

Błąd numer 8 930 był uruchamiany.Oznacza to uszkodzenie metadane , który spowodował polecenie DBCC, aby zakończyć.

1

Błąd numer 8967 był uruchamiany.Wystąpił błąd wewnętrzny DBCC.

2

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

3

Oznacza to uszkodzenie metadane , który spowodował polecenie DBCC, aby zakończyć.

4

Wykryto assert lub naruszenie zasad dostępu.

5

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

Raportowanie błędów

Plikautomatyczna kopia zapasowa mini-(SQLDUMPnnnn.txt) jest tworzony w SQL Server katalog dziennika, ilekroć DBCC CHECKTABLE wykryje błąd uszkodzenia.Jeżeli dane użycia funkcji kolekcja i funkcje raportowania błędów są włączone dla wystąpienie SQL Server, plik jest automatycznie przesyłane dalej Microsoft.Zebrane dane są używane do poprawy SQL Server funkcji.

Plik automatyczna kopia zapasowa zawiera wyniki polecenia DBCC CHECKTABLE i dodatkowej produkcji diagnostycznych.Plik ograniczył listach arbitralnej kontroli dostępu (DACL).Dostęp jest ograniczony do SQL Serverkontousługa i członków sysadmin rolę.Domyślnie sysadmin roli zawiera wszystkich członków grupy systemu Windows BUILTIN\Administratorzy oraz grupa administratora lokalnego.Polecenie DBCC się nie powieść, jeśli proces kolekcja danych nie powiedzie się.

Rozwiązywanie błędów

DBCC CHECKTABLE raportuje błędy, zaleca się przywrócenie bazy danych z bazy danych kopia zapasowa zamiast uruchomić narzędzie do naprawy jedną z opcji naprawy.Jeśli istnieje nie kopia zapasowa uruchomić narzędzie do naprawy można poprawić błędy, które zostały zgłoszone.Określono opcję NAPRAW, aby użyć na końcu listy błędów.Że poprawianie błędów za pomocą opcji REPAIR_ALLOW_DATA_LOSS mogą jednak wymagać niektórych stron i w związku z tym dane, można usunąć.

Naprawy można wykonać w transakcji użytkownika, aby zezwolić użytkownikowi na wycofać zmian, które zostały wprowadzone.Jeśli są przywracane naprawy, bazy danych będzie nadal zawierać błędy i musi zostać przywrócony z kopia zapasowa.Po ukończeniu wszystkie naprawy, tworzyć kopię zapasową bazy danych.

Zestawy wyników

DBCC CHECKTABLE zwraca następujące zestaw wyników.Tym samym zestaw wyników jest zwracana, jeśli można określić nazwę tabela lub opcje.

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 zwraca następujące zestaw wyników , jeśli określono opcję ESTIMATEONLY:

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 tabelalub element członkowski sysadmin stała rola serwera db_owner stałej rola bazy danychlub db_ddladmin stałej rola bazy danych.

Przykłady

A.Sprawdzanie określonej tabela

The following example checks the data page integrity of the HumanResources.Employee table in the AdventureWorks2008R2 database.

USE AdventureWorks2008R2;
GO
DBCC CHECKTABLE ("HumanResources.Employee");
GO

B.Niskie koszty sprawdzania tabela

Poniższy przykład wykonuje niskie sprawdzanie narzutów Employee tabela w AdventureWorks2008R2 bazy danych.

USE AdventureWorks2008R2;
GO
DBCC CHECKTABLE ("HumanResources.Employee") WITH PHYSICAL_ONLY;
GO

C.Sprawdzanie określonego indeksu

W poniższym przykładzie sprawdzana określonego indeksu uzyskane poprzez dostęp do sys.indexes.

USE AdventureWorks2008R2;
GO
DECLARE @indid int;
SET @indid = (SELECT index_id 
              FROM sys.indexes
              WHERE object_id = OBJECT_ID('Production.Product')
                    AND name = 'AK_Product_Name');
DBCC CHECKTABLE ("Production.Product", @indid);