Udostępnij za pośrednictwem


DBCC CHECKALLOC (Transact-SQL)

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Sprawdza spójność struktur alokacji miejsca na dysku dla określonej bazy danych.

Transact-SQL konwencje składni

Składnia

DBCC CHECKALLOC
[
    ( database_name | database_id | 0
      [ , NOINDEX
      | , { REPAIR_ALLOW_DATA_LOSS | REPAIR_FAST | REPAIR_REBUILD } ]
    )
    [ WITH
        {
          [ ALL_ERRORMSGS ]
          [ , NO_INFOMSGS ]
          [ , TABLOCK ]
          [ , ESTIMATEONLY ]
        }
    ]
]

Argumenty

database_name | database_id | 0

Nazwa lub identyfikator bazy danych, dla której ma być sprawdzana alokacja i użycie strony.

Jeśli nie określono wartości lub jeśli określono wartość 0, używana jest bieżąca baza danych.

Nazwy baz danych muszą być zgodne z regułami dotyczącymi identyfikatorów .

NOINDEX

Określa, że indeksy nieklastrowane dla tabel użytkowników nie powinny być sprawdzane.

NOINDEX jest utrzymywana tylko w celu zachowania zgodności z poprzednimi wersjami i nie ma wpływu na DBCC CHECKALLOC.

REPAIR_ALLOW_DATA_LOSS | REPAIR_FAST | REPAIR_REBUILD

Określa, że DBCC CHECKALLOC naprawić znalezione błędy. database_name musi być w trybie pojedynczego użytkownika.

  • REPAIR_ALLOW_DATA_LOSS

    Próbuje naprawić wszelkie znalezione błędy. Te naprawy mogą spowodować utratę danych. REPAIR_ALLOW_DATA_LOSS jest jedyną opcją, która umożliwia naprawianie błędów alokacji.

  • REPAIR_FAST

    Składnia jest obsługiwana tylko w celu zachowania zgodności z poprzednimi wersjami. Nie są wykonywane żadne akcje naprawy.

  • REPAIR_REBUILD

    Nie dotyczy.

Ważny

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 zaangażowana w co najmniej jedno ograniczenie, zalecamy uruchomienie DBCC CHECKCONSTRAINTS po operacji naprawy. Jeśli musisz użyć funkcji REPAIR, uruchom DBCC CHECKDB 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 CHECKDB za pomocą tej opcji.

Z

Umożliwia określenie opcji.

  • ALL_ERRORMSGS

    Wyświetla wszystkie komunikaty o błędach. Wszystkie komunikaty o błędach są domyślnie wyświetlane. Określenie lub pominięcie tej opcji nie ma wpływu.

  • NO_INFOMSGS

    Pomija wszystkie komunikaty informacyjne i raport używanego miejsca.

  • TABLOCK

    Powoduje, że polecenie DBCC uzyskuje wyłączną blokadę bazy danych.

  • SZACOWANIE

    Przedstawia szacowaną ilość tempdb miejsca wymaganego do uruchomienia DBCC CHECKALLOC po określeniu wszystkich innych opcji.

Uwagi

DBCC CHECKALLOC sprawdza alokację wszystkich stron w bazie danych, niezależnie od typu strony lub typu obiektu, do którego należą. Weryfikuje również różne struktury wewnętrzne, które są używane do śledzenia tych stron i relacji między nimi.

Jeśli nie określono NO_INFOMSGS, DBCC CHECKALLOC zbiera informacje o użyciu miejsca dla wszystkich obiektów w bazie danych. Te informacje są drukowane razem z wszelkimi błędami, które zostały znalezione.

Nuta

Funkcja DBCC CHECKALLOC jest zawarta w DBCC CHECKDB DBCC i DBCC CHECKFILEGROUP. Oznacza to, że nie trzeba uruchamiać DBCC CHECKALLOC oddzielnie od tych instrukcji. DBCC CHECKALLOC nie sprawdza danych FILESTREAM. FILESTREAM przechowuje binarne duże obiekty (BLOBS) w systemie plików.

Wewnętrzna migawka bazy danych

DBCC CHECKALLOC używa wewnętrznej migawki bazy danych w celu zapewnienia spójności transakcyjnej, którą musi wykonać te testy. Jeśli nie można utworzyć migawki lub określono TABLOCK, DBCC CHECKALLOC próbuje uzyskać wyłączną blokadę (X) w bazie danych w celu uzyskania wymaganej spójności.

Nuta

Uruchamianie DBCC CHECKALLOC względem tempdb nie wykonuje żadnych testów. 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. Zatrzymaj i uruchom aparat bazy danych, aby rozwiązać wszelkie problemy z alokacją tempdb. Ta akcja powoduje porzucenie i ponowne utworzenie bazy danych tempdb.

Omówienie komunikatów o błędach DBCC

Po zakończeniu DBCC CHECKALLOC 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.

Stan 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 CHECKALLOC wykryje błąd uszkodzenia. Po włączeniu funkcji zbierania danych użycia i funkcji raportowania błędów 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 CHECKALLOC 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 powiedzie się, jeśli proces zbierania danych zakończy się niepowodzeniem.

Usuwanie błędów

Jeśli DBCC CHECKALLOC zgłasza błędy, zalecamy przywrócenie bazy danych z kopii zapasowej bazy danych zamiast naprawiania. Jeśli kopia zapasowa nie istnieje, uruchomienie naprawy może poprawić zgłoszone błędy; jednak usunięcie błędów może wymagać usunięcia niektórych stron, a w związku z tym danych.

Naprawę można wykonać w transakcji użytkownika. Dzięki temu zmiany mogą zostać wycofane. Jeśli zmiany zostaną wycofane, baza danych będzie nadal zawierać błędy i musi zostać przywrócona z kopii zapasowej. Po zakończeniu napraw wykonaj kopię zapasową bazy danych.

Zestawy wyników

W poniższych tabelach opisano informacje, które DBCC CHECKALLOC zwraca.

Przedmiot Opis
firstIAM Tylko do użytku wewnętrznego.
główny Tylko do użytku wewnętrznego.
Dpages Liczba stron danych.
Pages używane Przydzielone strony.
Dedykowane zakresy Zakresy przydzielone do obiektu.

Jeśli są używane strony alokacji mieszanej, mogą istnieć strony przydzielone bez zakresów.

DBCC CHECKALLOC również raportuje podsumowanie alokacji dla każdego indeksu i partycji w każdym pliku. W tym podsumowaniu opisano rozkład danych.

Przedmiot Opis
Strony zarezerwowane Strony przydzielone do indeksu i nieużywanych stron w przydzielonych zakresach.
Używane strony Strony przydzielone i używane przez indeks.
Identyfikator partycji Tylko do użytku wewnętrznego.
Identyfikator jednostki Alloc Tylko do użytku wewnętrznego.
Dane w wierszu Strony zawierają dane indeksu lub stert.
Dane LOB Strony zawierają varchar(max), nvarchar(max), varbinary(max), tekst, ntext, xmli dane obrazu.
Dane przepełnienia wiersza Strony zawierają dane kolumn o zmiennej długości, które zostały wypchnięte poza wiersz.

DBCC CHECKALLOC zwraca następujący zestaw wyników (wartości mogą się różnić), z wyjątkiem sytuacji, w których określono ESTIMATEONLY lub NO_INFOMSGS.

DBCC results for 'master'.
***************************************************************
Table sysobjects                Object ID 1.
Index ID 1         FirstIAM (1:11)   Root (1:12)    Dpages 22.
    Index ID 1. 24 pages used in 5 dedicated extents.
Index ID 2         FirstIAM (1:1368)   Root (1:1362)    Dpages 10.
    Index ID 2. 12 pages used in 2 dedicated extents.
Index ID 3         FirstIAM (1:1392)   Root (1:1408)    Dpages 4.
    Index ID 3. 6 pages used in 0 dedicated extents.
Total number of extents is 7.
***************************************************************
'...'
***************************************************************
Table spt_server_info                Object ID 1938105945.
Index ID 1         FirstIAM (1:520)   Root (1:508)    Dpages 1.
    Index ID 1. 3 pages used in 0 dedicated extents.
Total number of extents is 0.
***************************************************************
Processed 52 entries in sysindexes for database ID 1.
File 1. Number of extents = 210, used pages = 1126, reserved pages = 1280.
           File 1 (number of mixed extents = 73, mixed pages = 184).
    Object ID 1, Index ID 0, data extents 5, pages 24, mixed extent pages 9.
'...'
    Object ID 1938105945, Index ID 0, data extents 0, pages 3, mixed extent pages 3.
Total number of extents = 210, used pages = 1126, reserved pages = 1280 in this database.
       (number of mixed extents = 73, mixed pages = 184) in this database.
CHECKALLOC found 0 allocation errors and 0 consistency errors in database 'master'.
DBCC results for 'master'.
***************************************************************
Table sys.sysrowsetcolumns                Object ID 4.
Index ID 1, partition ID 262144, alloc unit ID 262144 (type In-row data). FirstIAM (1:98). Root (1:94). Dpages 7.
Index ID 1, partition ID 262144, alloc unit ID 262144 (type In-row data). 9 pages used in 1 dedicated extents.
Index ID 1, partition ID 262144, alloc unit ID 262398 (type Row-overflow data). FirstIAM (0:0). Root (0:0). Dpages 0.
Index ID 1, partition ID 262144, alloc unit ID 262398 (type Row-overflow data). 0 pages used in 0 dedicated extents.
Total number of extents is 1.
...
***************************************************************
Processed 201 entries in system catalog for database ID 1.
File 1. Number of extents = 44, used pages = 300, reserved pages = 345.
           File 1 (number of mixed extents = 29, mixed pages = 225).
    Object ID 4, index ID 1, partition ID 262144, alloc unit ID 262144 (type In-row data), data extents 1, pages 9, mixed extent pages 8.
    Object ID 5, index ID 1, partition ID 327680, alloc unit ID 327680 (type In-row data), data extents 0, pages 2, mixed extent pages 2.
    Object ID 7, index ID 1, partition ID 458752, alloc unit ID 458752 (type In-row data), data extents 0, pages 5, mixed extent pages 5.
    Object ID 8, index ID 0, partition ID 524288, alloc unit ID 524288 (type In-row data), data extents 0, pages 2, mixed extent pages 2.
    Object ID 13, index ID 1, partition ID 851968, alloc unit ID 851968 (type In-row data), data extents 1, pages 9, mixed extent pages 8.
    Object ID 15, index ID 1, partition ID 983040, alloc unit ID 983040 (type In-row data), data extents 0, pages 2, mixed extent pages 2.
    Object ID 26, index ID 1, partition ID 281474978414592, alloc unit ID 1703937 (type In-row data), data extents 0, pages 3, mixed extent pages 3.
    Object ID 27, index ID 1, partition ID 281474978480128, alloc unit ID 1769473 (type In-row data), data extents 0, pages 3, mixed extent pages 3.
    Object ID 27, index ID 2, partition ID 562949955190784, alloc unit ID 1769474 (type In-row data), index extents 0, pages 3, mixed extent pages 3.
...
    Object ID 1179151246, index ID 1, partition ID 72057594038845440, alloc unit ID 13435136 (type In-row data), data extents 2, pages 18, mixed extent pages 8.
    Object ID 1179151246, index ID 2, partition ID 72057594038910976, alloc unit ID 13566208 (type In-row data), index extents 1, pages 16, mixed extent pages 8.
    Object ID 1911677858, index ID 0, partition ID 72057594039631872, alloc unit ID 15073536 (type In-row data), data extents 0, pages 2, mixed extent pages 2.
Total number of extents = 41, used pages = 289, reserved pages = 323 in this database.
       (number of mixed extents = 27, mixed pages = 211) in this database.
CHECKALLOC found 0 allocation errors and 0 consistency errors in database 'master'.
DBCC execution completed. If DBCC printed error messages, contact your system administrator.

Po określeniu ESTIMATEONLYDBCC CHECKALLOC zwraca następujący zestaw wyników.

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

Uprawnienia

Wymaga członkostwa w stałej roli serwera sysadmin lub stałej roli bazy danych db_owner.

Przykłady

Poniższy przykład wykonuje DBCC CHECKALLOC dla bieżącej bazy danych i bazy danych AdventureWorks2022.

-- Check the current database.
DBCC CHECKALLOC;
GO
-- Check the AdventureWorks2022 database.
DBCC CHECKALLOC (AdventureWorks2022);
GO

Zobacz też