Udostępnij za pośrednictwem


DBCC UPDATEUSAGE (Transact-SQL)

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Raporty i poprawia niedokładności stron i liczby wierszy w widokach wykazu. Te niedokładności mogą spowodować nieprawidłowe raporty użycia miejsca zwrócone przez procedurę składowaną systemu sp_spaceused.

Transact-SQL konwencje składni

Składnia

DBCC UPDATEUSAGE
(   { database_name | database_id | 0 }
    [ , { table_name | table_id | view_name | view_id }
    [ , { index_name | index_id } ] ]
) [ WITH [ NO_INFOMSGS ] [ , ] [ COUNT_ROWS ] ]

Argumenty

database_name | database_id | 0

Nazwa lub identyfikator bazy danych, dla której chcesz zgłosić i poprawić statystyki użycia miejsca. 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 .

table_name | table_id | view_name | view_id

Nazwa lub identyfikator tabeli lub widoku indeksowanego, dla którego mają być raportowane i poprawne statystyki użycia miejsca. Nazwy tabel i widoków muszą być zgodne z regułami dotyczącymi identyfikatorów.

index_id | index_name

Identyfikator lub nazwa indeksu do użycia. Jeśli nie zostanie określony, instrukcja przetwarza wszystkie indeksy dla określonej tabeli lub widoku.

Z

Umożliwia określenie opcji.

NO_INFOMSGS

Pomija wszystkie komunikaty informacyjne.

COUNT_ROWS

Określa, że kolumna liczba wierszy jest aktualizowana przy użyciu bieżącej liczby wierszy w tabeli lub widoku.

Uwagi

DBCC UPDATEUSAGE poprawia wiersze, używane strony, strony zarezerwowane, strony liścia i liczbę stron danych dla każdej partycji w tabeli lub indeksie. Jeśli w tabelach systemowych nie ma żadnych niedokładności, DBCC UPDATEUSAGE nie zwraca żadnych danych. Jeśli znaleziono niedokładności i poprawiono NO_INFOMSGS z NO_INFOMSGS, DBCC UPDATEUSAGE zwraca wiersze i kolumny aktualizowane w tabelach systemowych.

DBCC CHECKDB został rozszerzony w celu wykrywania, kiedy liczba stron lub wierszy staje się ujemna. Po wykryciu dane wyjściowe DBCC CHECKDB zawierają ostrzeżenie i zalecenie uruchomienia DBCC UPDATEUSAGE w celu rozwiązania problemu.

Najlepsze rozwiązania

Zalecamy wykonanie następujących czynności:

  • Nie uruchamiaj DBCC UPDATEUSAGE rutynowo, ponieważ program SQL Server przechowuje metadane w większości okoliczności. DBCC UPDATEUSAGE powinny być uruchamiane zgodnie z potrzebami, na przykład gdy podejrzewasz, że niepoprawne wartości są zwracane przez sp_spaceused. DBCC UPDATEUSAGE uruchomienie dużych tabel lub baz danych może zająć trochę czasu.
  • Rozważ uruchomienie DBCC UPDATEUSAGE rutynowo (na przykład co tydzień) tylko wtedy, gdy baza danych przechodzi częste modyfikacje języka Data Definition Language (DDL), takie jak instrukcje CREATE, ALTER lub DROP.

Zestawy wyników

DBCC UPDATEUSAGE zwraca (wartości mogą się różnić):

DBCC execution completed. If DBCC printed error messages, contact your system administrator.

Uprawnienia

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

Przykłady

A. Aktualizowanie liczby stron lub wierszy lub obu dla wszystkich obiektów w bieżącej bazie danych

W poniższym przykładzie określono 0 dla nazwy bazy danych i DBCC UPDATEUSAGE raportów zaktualizowano informacje o stronie lub liczbie wierszy dla bieżącej bazy danych.

DBCC UPDATEUSAGE (0);
GO

B. Aktualizowanie liczby stron lub wierszy albo obu dla bazy danych AdventureWorks oraz pomijanie komunikatów informacyjnych

Poniższy przykład określa AdventureWorks2022 jako nazwę bazy danych i pomija wszystkie komunikaty informacyjne.

DBCC UPDATEUSAGE (AdventureWorks2022) WITH NO_INFOMSGS;
GO

C. Aktualizowanie liczby stron lub wierszy albo obu dla tabeli Employee

Poniższy przykład raportuje zaktualizowane informacje o liczbie stron lub wierszy dla tabeli Employee w bazie danych AdventureWorks2022.

DBCC UPDATEUSAGE (AdventureWorks2022, 'HumanResources.Employee');
GO

D. Aktualizowanie liczby stron lub wierszy lub obu dla określonego indeksu w tabeli

Poniższy przykład określa IX_Employee_ManagerID jako nazwę indeksu.

DBCC UPDATEUSAGE (AdventureWorks2022, 'HumanResources.Employee', IX_Employee_OrganizationLevel_OrganizationNode);
GO

Zobacz też