DBCC CHECKALLOC (Transact-SQL)
Dotyczy:SQL Server
Azure SQL Database
Azure 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 uruchomieniaDBCC 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 ESTIMATEONLY
DBCC 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