Udostępnij za pośrednictwem


DBCC (Transact-SQL)

Dotyczy:SQL ServerAzure SQL DatabaseAzure 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ż masterbaza danych została umieszczona w trybie pojedynczego użytkownika przy użyciu instrukcji ALTER 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 CHECKALLOClub równoważnej części DBCC CHECKDBprzy 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, CHECKFILEGROUPi 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_REBUILDlub 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_REBUILDlub 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_REBUILDlub 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

Instrukcje weryfikacji

Instrukcje konserwacji

Różne instrukcje