DBCC (Transact-SQL)
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Język programowania Transact-SQL zawiera instrukcje DBCC, które działają jako polecenia konsoli bazy danych dla programu SQL Server.
Instrukcje polecenia konsoli bazy danych są pogrupowane w następujące kategorie.
Kategoria poleceń | Wykonać |
---|---|
Konserwacja | Zadania konserwacji bazy danych, indeksu lub grupy plików. |
Rozmaity | Różne zadania, takie jak włączanie flag śledzenia lub usuwanie biblioteki DLL z pamięci. |
Informacyjne | Zadania, które zbierają i wyświetlają różne typy informacji. |
Walidacja | Operacje weryfikacji na bazie danych, tabeli, indeksie, katalogu, grupie plików lub alokacji stron bazy danych. |
Polecenia DBCC przyjmują parametry wejściowe i zwracane wartości. Wszystkie parametry polecenia DBCC mogą akceptować zarówno literały Unicode, jak i DBCS.
Użycie wewnętrznej migawki bazy danych DBCC
Następujące polecenia DBCC działają na wewnętrznej migawki bazy danych tylko do odczytu tworzonej przez aparat bazy danych. Migawka uniemożliwia blokowanie i problemy ze współbieżnością podczas wykonywania tych poleceń. Aby uzyskać więcej informacji, zobacz Database Snapshots (SQL Server).
DBCC CHECKALLOC
DBCC CHECKCATALOG
DBCC CHECKDB
DBCC CHECKFILEGROUP
DBCC CHECKTABLE
Podczas wykonywania jednego z tych poleceń DBCC aparat bazy danych tworzy migawkę bazy danych i przenosi ją do stanu spójnej transakcyjnie. Następnie polecenie DBCC uruchamia testy względem tej migawki. Po zakończeniu wykonywania polecenia DBCC ta migawka zostanie porzucona.
Czasami wewnętrzna migawka bazy danych nie jest wymagana lub nie można jej utworzyć. W takim przypadku polecenie DBCC jest wykonywane względem rzeczywistej bazy danych. Jeśli baza danych jest w trybie online, polecenie DBCC używa blokady tabeli w celu zapewnienia spójności sprawdzanych obiektów. To zachowanie jest takie samo, jak w przypadku określenia opcji WITH TABLOCK
.
Wewnętrzna migawka bazy danych nie jest tworzona po wykonaniu polecenia DBCC:
- W przypadku bazy danych
master
wystąpienie programu SQL Server działa w trybie pojedynczego użytkownika. - W przypadku bazy danych innej niż
master
baza danych została umieszczona w trybie pojedynczego użytkownika przy użyciu instrukcjiALTER DATABASE
. - W odniesieniu do bazy danych tylko do odczytu.
- W przypadku bazy danych, która została ustawiona w trybie awaryjnym przy użyciu instrukcji
ALTER DATABASE
. - Względem
tempdb
. W takim przypadku nie można utworzyć migawki bazy danych z powodu ograniczeń wewnętrznych. - Za pomocą opcji
WITH TABLOCK
. W takim przypadku dbCC honoruje żądanie, nie tworząc migawki bazy danych.
Polecenia DBCC używają blokad tabeli zamiast wewnętrznych migawek bazy danych, gdy polecenie jest wykonywane w następujący sposób:
- Grupa plików tylko do odczytu
- System plików FAT
- Wolumin, który nie obsługuje nazwanych strumieni
- Wolumin, który nie obsługuje alternatywnych strumieni
Nuta
Próba uruchomienia DBCC CHECKALLOC
lub równoważnej części DBCC CHECKDB
przy użyciu opcji WITH TABLOCK
wymaga blokady na wyłączność bazy danych (X
). Nie można ustawić tej blokady bazy danych na tempdb
lub master
i prawdopodobnie zakończy się niepowodzeniem we wszystkich innych bazach danych.
Nuta
DBCC CHECKDB
kończy się niepowodzeniem, gdy jest uruchamiany względem master
, jeśli nie można utworzyć wewnętrznej migawki bazy danych.
Raportowanie postępu dla poleceń DBCC
Widok wykazu sys.dm_exec_requests
zawiera informacje o postępie i bieżącej fazie wykonywania poleceń DBCC CHECKDB
, CHECKFILEGROUP
i CHECKTABLE
. Kolumna percent_complete
wskazuje procent wykonania polecenia, a kolumna command
zgłasza bieżącą fazę wykonywania polecenia.
Definicja jednostki postępu zależy od bieżącej fazy wykonywania polecenia DBCC. Czasami postęp jest zgłaszany na stopień szczegółowości strony bazy danych, w innych fazach jest zgłaszany na stopień szczegółowości pojedynczej bazy danych lub naprawy alokacji. W poniższej tabeli opisano każdą fazę wykonywania oraz stopień szczegółowości, w którym polecenie zgłasza postęp.
Faza wykonywania | Opis | Stopień szczegółowości raportowania postępu |
---|---|---|
DBCC TABLE CHECK |
W tej fazie sprawdzana jest logiczna i fizyczna spójność obiektów w bazie danych. | Postęp zgłaszany na poziomie strony bazy danych. Wartość raportowania postępu jest aktualizowana dla każdej 1000 stron bazy danych, które są sprawdzane. |
DBCC TABLE REPAIR |
Naprawy bazy danych są wykonywane w tej fazie, jeśli określono REPAIR_FAST , REPAIR_REBUILD lub REPAIR_ALLOW_DATA_LOSS i występują błędy obiektu, które należy naprawić. |
Postęp zgłaszany na poziomie indywidualnej naprawy. Licznik jest aktualizowany dla każdej zakończonej naprawy. |
DBCC ALLOC CHECK |
Struktury alokacji w bazie danych są sprawdzane w tej fazie. Uwaga: DBCC CHECKALLOC wykonuje te same kontrole. |
Postęp nie jest zgłaszany |
DBCC ALLOC REPAIR |
Naprawy bazy danych są wykonywane w tej fazie, jeśli określono REPAIR_FAST , REPAIR_REBUILD lub REPAIR_ALLOW_DATA_LOSS i występują błędy alokacji, które należy naprawić. |
Postęp nie jest zgłaszany. |
DBCC SYS CHECK |
Tabele systemu bazy danych są sprawdzane w tej fazie. | Postęp zgłaszany na poziomie strony bazy danych. Wartość raportowania postępu jest aktualizowana dla co 1000 stron bazy danych, które są sprawdzane. |
DBCC SYS REPAIR |
Naprawy bazy danych są wykonywane w tej fazie, jeśli określono REPAIR_FAST , REPAIR_REBUILD lub REPAIR_ALLOW_DATA_LOSS i występują błędy tabeli systemu, które należy naprawić. |
Postęp zgłaszany na poziomie indywidualnej naprawy. Licznik jest aktualizowany dla każdej zakończonej naprawy. |
DBCC SSB CHECK |
Obiekty brokera usług programu SQL Server są sprawdzane w tej fazie. Uwaga: Ta faza nie jest wykonywana podczas wykonywania DBCC CHECKTABLE . |
Postęp nie jest zgłaszany. |
DBCC CHECKCATALOG |
Spójność wykazów baz danych jest sprawdzana w tej fazie. Uwaga: ta faza nie jest wykonywana podczas wykonywania DBCC CHECKTABLE . |
Postęp nie jest zgłaszany. |
DBCC IVIEW CHECK |
W tej fazie sprawdzana jest logiczna spójność wszystkich indeksowanych widoków znajdujących się w bazie danych. | Postęp zgłaszany na poziomie sprawdzanego widoku pojedynczej bazy danych. |
Instrukcje informacyjne
- DBCC INPUTBUFFER
- DBCC SHOWCONTIG
- DBCC OPENTRAN
- DBCC OUTPUTBUFFER
- DBCC PROCCACHE
- DBCC SHOW_STATISTICS
- DBCC SQLPERF
- DBCC TRACESTATUS
- DBCC USEROPTIONS
Instrukcje weryfikacji
- DBCC CHECKALLOC
- DBCC CHECKCATALOG
- OGRANICZENIA KONTROLNE DBCC
- DBCC CHECKDB
- DBCC CHECKFILEGROUP
- DBCC CHECKIDENT
- DBCC CHECKTABLE
Instrukcje konserwacji
- DBCC CLEANTABLE DBCC
- DBCC DBREINDEX
- DBCC DROPCLEANBUFFERS
- DBCC FREEPROCCACHE
- DBCC INDEXDEFRAG
- DBCC SHRINKDATABASE
- DBCC SHRINKFILE
- DBCC UPDATEUSAGE
Różne instrukcje
- DBCC dllname (BEZPŁATNA)
- DBCC HELP
- DBCC FLUSHAUTHCACHE
- DBCC TRACEOFF
- DBCC FREESESSIONCACHE
- DBCC TRACEON
- DBCC FREESYSTEMCACHE
- DBCC CLONEDATABASE (Dotyczy: SQL Server 2014 (12.x) z dodatkiem Service Pack 2 lub nowszym).