Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Sprawdza integralność wszystkich stron i struktur tworzących tabelę lub indeksowany widok.
Transact-SQL konwencje składni
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 } ]
[ , MAXDOP = number_of_processors ]
}
]
Argumenty (w programowaniu)
| table_nameview_name
Tabela lub widok indeksowany, dla którego można uruchomić kontrole integralności. Nazwy tabel lub widoków muszą być zgodne z regułami dotyczącymi identyfikatorów.
NOINDEX
Określa, że nie należy wykonywać intensywnych kontroli indeksów nieklastrowanych dla tabel użytkowników. Zmniejsza to całkowity czas wykonywania.
NOINDEX
nie ma wpływu na tabele systemowe, ponieważ kontrole integralności są zawsze wykonywane we wszystkich indeksach tabeli systemu.
index_id
Numer identyfikacji indeksu (ID), dla którego ma zostać uruchomione kontrole integralności. Jeśli określono index_id , DBCC CHECKTABLE
uruchamia kontrole integralności tylko dla tego indeksu, wraz ze stertą lub indeksem klastrowanym.
REPAIR_ALLOW_DATA_LOSS | REPAIR_FAST | REPAIR_REBUILD
Określa, że DBCC CHECKTABLE
naprawić znalezione błędy. Aby użyć opcji naprawy, baza danych musi być w trybie pojedynczego użytkownika.
Zezwolenie_na_naprawę_z_utrata_danych
Próbuje naprawić wszystkie zgłoszone błędy. Te naprawy mogą spowodować utratę danych.
NAPRAWA_SZYBKO
Składnia jest obsługiwana tylko w celu zachowania zgodności z poprzednimi wersjami. Nie są wykonywane żadne akcje naprawy.
NAPRAWA_PRZEBUDOWA
Wykonuje naprawy, które nie mają możliwości utraty danych. Może to obejmować szybkie naprawy, takie jak naprawianie brakujących wierszy w indeksach nieklastrowanych i bardziej czasochłonne naprawy, takie jak ponowne kompilowanie indeksu.
Ten argument nie naprawia błędów dotyczących danych FILESTREAM.
Ważne
Użyj opcji NAPRAW tylko w ostateczności. Aby naprawić błędy, zalecamy przywrócenie z kopii zapasowej. Operacje naprawy nie uwzględniają żadnych ograniczeń, które mogą istnieć w tabelach lub między nimi. Jeśli określona tabela jest objęta co najmniej jednym ograniczeniem, zalecamy uruchomienie DBCC CHECKCONSTRAINTS
po operacji naprawy. Jeśli musisz użyć funkcji REPAIR, uruchom DBCC CHECKTABLE
bez opcji naprawy, aby znaleźć poziom naprawy do użycia. Jeśli używasz poziomu REPAIR_ALLOW_DATA_LOSS
, zalecamy wykonanie kopii zapasowej bazy danych przed uruchomieniem DBCC CHECKTABLE
za pomocą tej opcji.
ALL_ERRORMSGS
Wyświetla nieograniczoną liczbę błędów. Wszystkie komunikaty o błędach są domyślnie wyświetlane. Określenie lub pominięcie tej opcji nie ma wpływu.
ROZSZERZONE_LOGICZNE_SPRAWDZENIA
Jeśli poziom zgodności wynosi 100, wprowadzony w programie SQL Server 2008 (10.0.x), przeprowadza testy spójności logicznej dla widoku indeksowanego, indeksów XML i indeksów przestrzennych, w których są obecne.
Aby uzyskać więcej informacji, zobacz Wykonywanie kontroli spójności logicznej na indeksach w sekcji Uwagi w dalszej części tego artykułu.
NO_INFOMSGS
Pomija wszystkie komunikaty informacyjne.
TABLOCK
Powoduje DBCC CHECKTABLE
uzyskanie blokady udostępnionej tabeli zamiast używania wewnętrznej migawki bazy danych.
TABLOCK
spowoduje DBCC CHECKTABLE
szybsze uruchomienie tabeli pod dużym obciążeniem, ale zmniejsza współbieżność dostępną w tabeli podczas DBCC CHECKTABLE
działania.
TYLKO SZACOWANIE
Przedstawia szacowaną ilość miejsca potrzebnego tempdb
do uruchomienia DBCC CHECKTABLE
ze wszystkimi innymi określonymi opcjami.
PHYSICAL_ONLY
Ogranicza sprawdzanie integralności fizycznej struktury strony, nagłówków rekordów i fizycznej struktury drzew B.. Zaprojektowana w celu zapewnienia niewielkiej kontroli spójności fizycznej tabeli, ta kontrola może również wykrywać rozdarte strony i typowe awarie sprzętowe, które mogą naruszyć bezpieczeństwo danych. Pełny przebieg DBCC CHECKTABLE
może trwać znacznie dłużej niż we wcześniejszych wersjach. To zachowanie występuje z następujących powodów:
- Testy logiczne są bardziej kompleksowe.
- Niektóre struktury, które mają być sprawdzane, są bardziej złożone.
- Wprowadzono wiele nowych kontroli w celu uwzględnienia nowych funkcji.
Uwaga / Notatka
W dokumentacji jest zwykle używany termin B-tree w odniesieniu do indeksów. W indeksach typu rowstore silnik bazy danych implementuje drzewo B+. Nie dotyczy to indeksów magazynu kolumn ani indeksów w tabelach zoptymalizowanych pod kątem pamięci. Aby uzyskać więcej informacji, zobacz architekturę i przewodnik projektowania indeksu SQL Server i Azure SQL.
W związku z tym użycie PHYSICAL_ONLY
opcji może spowodować znacznie krótszy czas wykonywania dla DBCC CHECKTABLE
dużych tabel i dlatego jest zalecane do częstego używania w systemach produkcyjnych. Nadal zalecamy okresowe wykonywanie pełnego przebiegu DBCC CHECKTABLE
. Częstotliwość tych przebiegów zależy od czynników specyficznych dla poszczególnych firm i środowisk produkcyjnych.
PHYSICAL_ONLY
zawsze oznacza NO_INFOMSGS i nie jest dozwolony z żadną z opcji naprawy.
Uwaga / Notatka
Określenie PHYSICAL_ONLY
powoduje, że DBCC CHECKTABLE
pomija wszystkie kontrole danych FILESTREAM.
CZYSTOŚĆ DANYCH
Przyczyny DBCC CHECKTABLE
sprawdzania tabeli pod kątem wartości kolumn, które nie są prawidłowe lub poza zakresem. Na przykład DBCC CHECKTABLE
wykrywa kolumny z wartościami daty i godziny, które są większe lub mniejsze niż dopuszczalny zakres dla typu danych datetime; lub kolumn typu danych liczbowych dziesiętnych lub przybliżonych z wartościami skalowania lub precyzji, które nie są prawidłowe.
Kontrole integralności wartości kolumny są domyślnie włączone i nie wymagają opcji DATA_PURITY
. W przypadku baz danych uaktualnionych z wcześniejszych wersji programu SQL Server można DBCC CHECKTABLE WITH DATA_PURITY
znaleźć i poprawić błędy w określonej tabeli. Jednak kontrole wartości kolumn w tabeli nie są domyślnie włączone, dopóki DBCC CHECKDB WITH DATA_PURITY
nie zostanie uruchomiony błąd wolny od błędu w bazie danych.
DBCC CHECKDB
Następnie sprawdź DBCC CHECKTABLE
integralność wartości kolumny domyślnie.
Nie można naprawić błędów walidacji zgłaszanych przez tę opcję przy użyciu opcji naprawy DBCC. Aby uzyskać informacje na temat ręcznego poprawiania tych błędów, zobacz Rozwiązywanie problemów z błędami spójności bazy danych zgłoszonymi przez bazę danych DBCC CHECKDB.
Jeśli określono PHYSICAL_ONLY
, kontrole integralności kolumn nie są wykonywane.
MAXDOP
Dotyczy: SQL Server 2014 (12.x) Service Pack 2 i nowsze wersje.
Zastępuje opcję konfiguracji sp_configure
dla instrukcji . Parametr MAXDOP może przekroczyć wartość skonfigurowaną za pomocą sp_configure
polecenia . Jeśli parametr MAXDOP przekracza wartość skonfigurowaną za pomocą zarządcy zasobów, aparat bazy danych używa wartości MAXDOP zarządcy zasobów opisanej w artykule ALTER WORKLOAD GROUP (Transact-SQL). Wszystkie reguły semantyczne używane z maksymalną opcją konfiguracji równoległości mają zastosowanie podczas korzystania z wskazówki zapytania MAXDOP. Aby uzyskać więcej informacji, zobacz Configure the max degree of parallelism Server Configuration Option.
Uwaga / Notatka
Jeśli parametr MAXDOP ma wartość zero, serwer wybiera maksymalny stopień równoległości.
Uwagi
Uwaga / Notatka
Aby wykonać DBCC CHECKTABLE
każdą tabelę w bazie danych, użyj polecenia DBCC CHECKDB.
W przypadku określonej tabeli sprawdza następujące DBCC CHECKTABLE
kwestie:
- Indeksowanie, strony danych w wierszu, LOB i przepełnienie wierszy są poprawnie połączone.
- Indeksy są w prawidłowej kolejności sortowania.
- Wskaźniki są spójne.
- Dane na każdej stronie są uzasadnione, uwzględniane kolumny obliczeniowe.
- Przesunięcia stron są uzasadnione.
- Każdy wiersz w tabeli bazowej ma pasujący wiersz w każdym indeksie nieklastrowanym i odwrotnie.
- Każdy wiersz w partycjonowanej tabeli lub indeksie znajduje się we właściwej partycji.
- Spójność na poziomie połączenia między systemem plików i tabelą podczas przechowywania danych varbinary(max) w systemie plików przy użyciu funkcji FILESTREAM.
Przeprowadzanie kontroli spójności logicznej na indeksach
Sprawdzanie spójności logicznej indeksów różni się w zależności od poziomu zgodności bazy danych w następujący sposób:
Jeśli poziom zgodności to 100 (SQL Server 2008 (10.0.x)) lub nowszy:
O ile nie określono
NOINDEX
,DBCC CHECKTABLE
wykonuje zarówno testy spójności fizycznej, jak i logicznej dla pojedynczej tabeli oraz we wszystkich indeksach nieklastrowanych. Jednak w przypadku indeksów XML, indeksów przestrzennych i widoków indeksowanych są domyślnie wykonywane tylko testy spójności fizycznej.Jeśli określono
WITH EXTENDED_LOGICAL_CHECKS
, dokonywana jest weryfikacja logiczna w widoku indeksowanym, indeksach XML i indeksach przestrzennych, jeśli są obecne. Domyślnie testy spójności fizycznej są wykonywane przed sprawdzaniem spójności logicznej. JeśliNOINDEX
jest również określona, są wykonywane tylko testy logiczne.Te testy spójności logicznej sprawdzają krzyżowo wewnętrzną tabelę indeksów obiektu indeksu z tabelą użytkownika, do którego się odwołuje. Aby zidentyfikować odstające wiersze, jest konstruowane zapytanie wewnętrzne w celu wykonania pełnego przecięcia tabel wewnętrznej i użytkownika. Uruchomienie tego zapytania może mieć bardzo duży wpływ na wydajność, a jego postęp nie może być śledzony. Dlatego zalecamy określenie
WITH EXTENDED_LOGICAL_CHECKS
tylko wtedy, gdy podejrzewasz problemy z indeksem, które nie mają związku z uszkodzeniem fizycznym, lub jeśli sumy kontrolne na poziomie strony zostały wyłączone i podejrzewasz uszkodzenie sprzętu na poziomie kolumny.Jeśli indeks jest indeksem filtrowanym,
DBCC CHECKTABLE
przeprowadza sprawdzanie spójności w celu sprawdzenia, czy wpisy indeksu spełniają predykat filtru.
Począwszy od programu SQL Server 2016 (13.x), dodatkowe kontrole utrwalonych kolumn obliczeniowych, kolumn UDT i filtrowanych indeksów nie będą domyślnie uruchamiane, aby uniknąć kosztownych ocen wyrażeń. Ta zmiana znacznie skraca długość trwania
CHECKTABLE
w przypadku baz danych zawierających te obiekty. Jednak testy spójności fizycznej tych obiektów są zawsze wykonywane. Tylko wtedy, gdyEXTENDED_LOGICAL_CHECKS
jest określona opcja, są wykonywane oceny wyrażeń, oprócz już obecnych kontroli logicznych (widok indeksowany, indeksy XML i indeksy przestrzenne) w ramachEXTENDED_LOGICAL_CHECKS
opcji.Jeśli poziom zgodności wynosi 90 (SQL Server 2005 (9.x)) lub mniej, chyba że
NOINDEX
zostanie określony,DBCC CHECKTABLE
wykonuje zarówno testy spójności fizycznej, jak i logicznej dla pojedynczej tabeli lub widoku indeksowanego oraz na wszystkich indeksach nieklastrowanych i XML. Indeksy przestrzenne nie są obsługiwane.
Aby poznać poziom zgodności bazy danych
Wewnętrzna migawka bazy danych
DBCC CHECKTABLE
używa wewnętrznej migawki bazy danych, aby zapewnić spójność transakcyjną, którą musi wykonać te testy. Aby uzyskać więcej informacji, zobacz Wyświetlanie rozmiaru pliku rozrzedzielonego migawki bazy danych (Transact-SQL) i sekcji użycia wewnętrznej migawki bazy danych DBCC w pliku DBCC (Transact-SQL).
Jeśli nie można utworzyć migawki lub TABLOCK
jest określona, uzyskuje blokadę udostępnionej tabeli w DBCC CHECKTABLE
celu uzyskania wymaganej spójności.
Uwaga / Notatka
Jeśli DBCC CHECKTABLE
element jest uruchamiany względem tempdb
elementu , musi uzyskać udostępnioną blokadę tabeli. Wynika to z faktu, że ze względu na wydajność migawki bazy danych nie są dostępne w tempdb
. Oznacza to, że nie można uzyskać wymaganej spójności transakcyjnej.
Sprawdzanie i naprawianie danych FILESTREAM
Po włączeniu funkcji FILESTREAM dla bazy danych i tabeli można opcjonalnie przechowywać varbinary(max) binarnych dużych obiektów (BLOB) w systemie plików. W przypadku użycia DBCC CHECKTABLE
w tabeli, która przechowuje obiekty BLOB w systemie plików, funkcja DBCC sprawdza spójność na poziomie połączenia między systemem plików a bazą danych.
Jeśli na przykład tabela zawiera kolumnę varbinary(max), która używa atrybutu FILESTREAM, sprawdzi, DBCC CHECKTABLE
czy istnieje mapowanie jeden do jednego między katalogami systemu plików a plikami i wierszami tabeli, kolumnami i wartościami kolumn.
DBCC CHECKTABLE
może naprawić uszkodzenie, jeśli określisz opcję REPAIR_ALLOW_DATA_LOSS
. Aby naprawić uszkodzenie FILESTREAM, DBCC usunie wszystkie wiersze tabeli, które nie zawierają danych systemu plików i usunie wszystkie katalogi i pliki, które nie są mapowane na wiersz tabeli, kolumnę lub wartość kolumny.
Równoległe sprawdzanie obiektów
Domyślnie DBCC CHECKTABLE
wykonuje równoległe sprawdzanie obiektów. Stopień równoległości jest automatycznie określany przez procesor zapytań. Maksymalny stopień równoległości jest konfigurowany w taki sam sposób, jak w przypadku zapytań równoległych. Aby ograniczyć maksymalną liczbę procesorów dostępnych do sprawdzania DBCC, użyj sp_configure. Aby uzyskać więcej informacji, zobacz Configure the max degree of parallelism Server Configuration Option.
Sprawdzanie równoległe można wyłączyć przy użyciu flagi śledzenia 2528. Aby uzyskać więcej informacji, zobacz Trace Flags (Transact-SQL).
Uwaga / Notatka
DBCC CHECKTABLE
Podczas operacji bajty przechowywane w kolumnie typu zdefiniowanego przez użytkownika w bajtach muszą być równe obliczonej serializacji wartości typu zdefiniowanej przez użytkownika. Jeśli tak nie jest, rutyna DBCC CHECKTABLE
zgłosi błąd spójności.
Uwaga / Notatka
Ta funkcja nie jest dostępna w każdej wersji programu SQL Server. Aby uzyskać więcej informacji, zobacz równoległe sprawdzanie spójności w sekcji zarządzania RDBMS wersji i obsługiwanych funkcji programu SQL Server 2022.
Omówienie komunikatów o błędach DBCC
Po zakończeniu DBCC CHECKTABLE
polecenia zostanie zapisany komunikat w dzienniku błędów programu SQL Server. Jeśli polecenie DBCC zostanie wykonane pomyślnie, komunikat wskazuje pomyślne ukończenie i czas uruchomienia polecenia. Jeśli polecenie DBCC zatrzymuje się przed ukończeniem sprawdzania z powodu błędu, komunikat wskazuje, że polecenie zostało zakończone, wartość stanu i czas uruchomienia polecenia. W poniższej tabeli wymieniono i opisano wartości stanu, które można uwzględnić w komunikacie.
Państwo | Opis |
---|---|
0 | Zgłoszono błąd 8930. Oznacza to uszkodzenie metadanych, które spowodowało zakończenie polecenia DBCC. |
1 | Zgłoszono błąd numer 8967. Wystąpił wewnętrzny błąd DBCC. |
2 | Wystąpił błąd podczas naprawy bazy danych w trybie awaryjnym. |
3 | Oznacza to uszkodzenie metadanych, które spowodowało zakończenie polecenia DBCC. |
4 | Wykryto naruszenie potwierdzenia lub dostępu. |
5 | Wystąpił nieznany błąd, który zakończył polecenie DBCC. |
Raportowanie błędów
Plik mini-zrzutu (SQLDUMP<nnnn>.txt
) jest tworzony w katalogu LOG
programu SQL Server za każdym razem, gdy DBCC CHECKTABLE
wykryje błąd uszkodzenia. Gdy funkcje Użycie funkcji zbierania danych i raportowania błędów są włączone dla wystąpienia programu SQL Server, plik jest automatycznie przekazywany do firmy Microsoft. Zebrane dane służą do ulepszania funkcjonalności programu SQL Server.
Plik zrzutu zawiera wyniki polecenia DBCC CHECKTABLE
i dodatkowe dane wyjściowe diagnostyczne. Plik ma ograniczone uznaniowe listy kontroli dostępu (DACLs). Dostęp jest ograniczony do konta usługi programu SQL Server i członków roli administratora systemu. Domyślnie rola administratora systemu zawiera wszystkich członków grupy WINDOWS BUILTIN\Administrators i grupy administratora lokalnego. Polecenie DBCC nie ulega awarii, jeśli proces zbierania danych zakończy się niepowodzeniem.
Usuwanie błędów
Jeśli DBCC CHECKTABLE
wystąpią jakiekolwiek błędy, zalecamy przywrócenie bazy danych z kopii zapasowej bazy danych zamiast uruchamiania funkcji REPAIR przy użyciu jednej z opcji NAPRAW. Jeśli żadna kopia zapasowa nie istnieje, uruchomienie polecenia REPAIR może poprawić zgłoszone błędy. Opcja NAPRAWa do użycia jest określona na końcu listy zgłoszonych błędów. Jednak usunięcie błędów przy użyciu REPAIR_ALLOW_DATA_LOSS
opcji może wymagać usunięcia niektórych stron, a tym samym danych.
Naprawę można wykonać w ramach transakcji użytkownika, aby umożliwić użytkownikowi wycofanie wprowadzonych zmian. Jeśli naprawy zostaną wycofane, baza danych będzie nadal zawierać błędy i musi zostać przywrócona z kopii zapasowej. Po zakończeniu wszystkich napraw wykonaj kopię zapasową bazy danych.
Zestawy wyników
DBCC CHECKTABLE
zwraca następujący zestaw wyników. Ten sam zestaw wyników jest zwracany, jeśli określisz tylko nazwę tabeli lub dowolną 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
Zwraca następujący 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 być właścicielem tabeli lub być członkiem stałej roli serwera sysadmin, db_owner stałej roli bazy danych lub db_ddladmin stałej roli bazy danych.
Przykłady
Odp. Sprawdzanie określonej tabeli
Poniższy przykład sprawdza integralność HumanResources.Employee
strony danych tabeli w bazie danych AdventureWorks2022.
DBCC CHECKTABLE ('HumanResources.Employee');
GO
B. Przeprowadzanie sprawdzania niskiego obciążenia tabeli
W poniższym przykładzie jest wykonywane sprawdzanie Employee
niskiego obciążenia tabeli w bazie danych AdventureWorks2022.
DBCC CHECKTABLE ('HumanResources.Employee') WITH PHYSICAL_ONLY;
GO
C. Sprawdzanie określonego indeksu
Poniższy przykład sprawdza określony indeks uzyskany przez uzyskanie sys.indexes
dostępu do elementu .
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);