Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
SQL Database w Microsoft Fabric
Procedura sp_spaceused składowana systemu wyświetla jedną z następujących czynności:
liczba wierszy, zarezerwowane miejsce na dysku i miejsce na dysku używane przez tabelę, widok indeksowany lub kolejkę usługi Service Broker w bieżącej bazie danych
miejsce na dysku zarezerwowane i używane przez całą bazę danych
Transact-SQL konwencje składni
Składnia
sp_spaceused
[ [ @objname = ] N'objname' ]
[ , [ @updateusage = ] 'updateusage' ]
[ , [ @mode = ] 'mode' ]
[ , [ @oneresultset = ] oneresultset ]
[ , [ @include_total_xtp_storage = ] include_total_xtp_storage ]
[ ; ]
Uwaga / Notatka
Ta składnia nie jest obsługiwana przez bezserwerową pulę SQL w usłudze Azure Synapse Analytics.
Argumenty (w programowaniu)
W przypadku usług Azure Synapse Analytics i Analytics Platform System (PDW) sp_spaceused należy określić nazwane parametry (na przykład sp_spaceused (@objname= N'Table1');), zamiast polegać na pozycji porządkowej parametrów.
[ @objname = ] N'objname'
Kwalifikowana lub niekwalifikowana nazwa tabeli, widok indeksowany lub kolejka, dla której są żądane informacje o użyciu miejsca.
@objname to nvarchar(776), z wartością domyślną NULL. Cudzysłowy są wymagane tylko wtedy, gdy określono kwalifikowaną nazwę obiektu. Jeśli podano w pełni kwalifikowaną nazwę obiektu (w tym nazwę bazy danych), nazwa bazy danych musi być nazwą bieżącej bazy danych.
Jeśli nie określono @objname , wyniki są zwracane dla całej bazy danych.
Uwaga / Notatka
Usługi Azure Synapse Analytics i Analytics Platform System (PDW) obsługują tylko obiekty bazy danych i tabel.
[ @updateusage = ] 'updateusage'
Wskazuje, DBCC UPDATEUSAGE że należy uruchomić polecenie , aby zaktualizować informacje o użyciu miejsca.
@updateusage jest varchar(5), z wartością domyślną false. Jeśli nie określono @objname , instrukcja jest uruchamiana w całej bazie danych. W przeciwnym razie instrukcja jest uruchamiana w @objname. Wartości mogą mieć wartość true lub false.
[ @mode = ] "mode"
Wskazuje zakres wyników. W przypadku rozproszonej tabeli lub bazy danych parametr @mode umożliwia dołączenie lub wykluczenie zdalnej części obiektu. Aby uzyskać więcej informacji, zobacz Stretch Database.
Ważne
Baza danych Stretch jest przestarzała w programie SQL Server 2022 (16.x) i usłudze Azure SQL Database. W przyszłej wersji silnika bazy danych, ta funkcja zostanie usunięta. Unikaj używania tej funkcji w nowych pracach programistycznych i zaplanuj modyfikowanie aplikacji, które obecnie korzystają z tej funkcji.
@mode jest varchar(11) i może być jedną z tych wartości.
| Wartość | Opis |
|---|---|
ALL (ustawienie domyślne) |
Zwraca statystyki magazynu obiektu lub bazy danych, w tym zarówno część lokalną, jak i część zdalną. |
LOCAL_ONLY |
Zwraca statystyki magazynu tylko lokalnej części obiektu lub bazy danych. Jeśli obiekt lub baza danych nie jest włączona w systemie Stretch, zwraca te same statystyki co w przypadku , gdy @mode to ALL. |
REMOTE_ONLY |
Zwraca statystyki magazynu tylko zdalnego fragmentu obiektu lub bazy danych. Ta opcja zgłasza błąd, gdy spełniony jest jeden z następujących warunków: Tabela nie jest włączona dla programu Stretch. Tabela jest włączona dla programu Stretch, ale nigdy nie włączono migracji danych. W takim przypadku tabela zdalna nie ma jeszcze schematu. Użytkownik ręcznie porzucił tabelę zdalną. Aprowizowanie zdalnego archiwum danych zwróciło stan Powodzenie, ale w rzeczywistości nie powiodło się. |
[ @oneresultset = ] jeden zbiór wyników
Wskazuje, czy ma być zwracany pojedynczy zestaw wyników. @oneresultset jest bitowa i może być jedną z następujących wartości:
| Wartość | Opis |
|---|---|
0 (ustawienie domyślne) |
Jeśli @objname ma wartość null lub nie jest określona, zwracane są dwa zestawy wyników. |
1 |
Gdy @objname jest NULL określona lub nie jest określona, zwracany jest pojedynczy zestaw wyników. |
[ @include_total_xtp_storage = ] include_total_xtp_storage
Dotyczy: SQL Server 2017 (14.x) i nowsze wersje oraz SQL Database
Gdy @oneresultset jest ustawiona na 1wartość , ten parametr określa, czy pojedynczy zestaw wyników zawiera kolumny dla MEMORY_OPTIMIZED_DATA magazynu.
@include_total_xtp_storage jest bitowa z wartością domyślną 0. Jeśli 1kolumny XTP są uwzględnione w zestawie wyników.
Zwracanie wartości kodu
0 (powodzenie) lub 1 (niepowodzenie).
Zestaw wyników
Jeśli @objname zostanie pominięta, a wartość @oneresultset to 0, zostaną zwrócone następujące zestawy wyników, aby podać bieżące informacje o rozmiarze bazy danych.
| Nazwa kolumny | Typ danych | Opis |
|---|---|---|
database_name |
nvarchar(128) | Nazwa bieżącej bazy danych. |
database_size |
varchar(18) | Rozmiar bieżącej bazy danych w megabajtach.
database_size zawiera zarówno dane, jak i pliki dziennika. |
unallocated space |
varchar(18) | Miejsce w bazie danych, która nie jest zarezerwowana dla obiektów bazy danych. |
| Nazwa kolumny | Typ danych | Opis |
|---|---|---|
reserved |
varchar(18) | Całkowita ilość miejsca przydzielonego przez obiekty w bazie danych. |
data |
varchar(18) | Łączna ilość miejsca używanego przez dane. |
index_size |
varchar(18) | Łączna ilość miejsca używanego przez indeksy. |
unused |
varchar(18) | Łączna ilość miejsca zarezerwowanego dla obiektów w bazie danych, ale nie jest jeszcze używana. |
Jeśli @objname zostanie pominięta, a wartość @oneresultset to 1, zostanie zwrócony następujący pojedynczy zestaw wyników w celu udostępnienia bieżących informacji o rozmiarze bazy danych.
| Nazwa kolumny | Typ danych | Opis |
|---|---|---|
database_name |
nvarchar(128) | Nazwa bieżącej bazy danych. |
database_size |
varchar(18) | Rozmiar bieżącej bazy danych w megabajtach.
database_size zawiera zarówno dane, jak i pliki dziennika. |
unallocated space |
varchar(18) | Miejsce w bazie danych, która nie jest zarezerwowana dla obiektów bazy danych. |
reserved |
varchar(18) | Całkowita ilość miejsca przydzielonego przez obiekty w bazie danych. |
data |
varchar(18) | Łączna ilość miejsca używanego przez dane. |
index_size |
varchar(18) | Łączna ilość miejsca używanego przez indeksy. |
unused |
varchar(18) | Łączna ilość miejsca zarezerwowanego dla obiektów w bazie danych, ale nie jest jeszcze używana. |
Jeśli określono @objname , dla określonego obiektu zostanie zwrócony następujący zestaw wyników.
| Nazwa kolumny | Typ danych | Opis |
|---|---|---|
name |
nvarchar(128) | Nazwa obiektu, dla którego zażądano informacji o użyciu miejsca. Nazwa schematu obiektu nie jest zwracana. Jeśli nazwa schematu jest wymagana, użyj sys.dm_db_partition_stats lub sys.dm_db_index_physical_stats dynamicznych widoków zarządzania, aby uzyskać równoważne informacje o rozmiarze. |
rows |
char(20) | Liczba wierszy istniejących w tabeli. Jeśli określony obiekt jest kolejką usługi Service Broker, ta kolumna wskazuje liczbę komunikatów w kolejce. |
reserved |
varchar(18) | Łączna ilość zarezerwowanego miejsca dla @objname. |
data |
varchar(18) | Łączna ilość miejsca używanego przez dane w @objname. |
index_size |
varchar(18) | Łączna ilość miejsca używanego przez indeksy w @objname. |
unused |
varchar(18) | Łączna ilość miejsca zarezerwowanego dla @objname, ale nie jest jeszcze używana. |
Ten tryb jest domyślny, jeśli nie określono żadnych parametrów. Następujące zestawy wyników są zwracane szczegółowo informacje o rozmiarze bazy danych dysku.
| Nazwa kolumny | Typ danych | Opis |
|---|---|---|
database_name |
nvarchar(128) | Nazwa bieżącej bazy danych. |
database_size |
varchar(18) | Rozmiar bieżącej bazy danych w megabajtach.
database_size zawiera zarówno dane, jak i pliki dziennika. Jeśli baza danych ma grupę MEMORY_OPTIMIZED_DATA plików, ta wartość zawiera łączny rozmiar na dysku wszystkich plików punktów kontrolnych w grupie plików. |
unallocated space |
varchar(18) | Miejsce w bazie danych, która nie jest zarezerwowana dla obiektów bazy danych. Jeśli baza danych ma grupę MEMORY_OPTIMIZED_DATA plików, ta wartość zawiera łączny rozmiar na dysku plików punktu kontrolnego ze stanem PRECREATED w grupie plików. |
Miejsce używane przez tabele w bazie danych. Ten zestaw wyników nie odzwierciedla tabel zoptymalizowanych pod kątem pamięci, ponieważ nie ma ewidencjonowania użycia dysku dla tabeli:
| Nazwa kolumny | Typ danych | Opis |
|---|---|---|
reserved |
varchar(18) | Całkowita ilość miejsca przydzielonego przez obiekty w bazie danych. |
data |
varchar(18) | Łączna ilość miejsca używanego przez dane. |
index_size |
varchar(18) | Łączna ilość miejsca używanego przez indeksy. |
unused |
varchar(18) | Łączna ilość miejsca zarezerwowanego dla obiektów w bazie danych, ale nie jest jeszcze używana. |
Następujący zestaw wyników jest zwracany tylko wtedy, gdy baza danych ma grupę MEMORY_OPTIMIZED_DATA plików z co najmniej jednym kontenerem:
| Nazwa kolumny | Typ danych | Opis |
|---|---|---|
xtp_precreated |
varchar(18) | Całkowity rozmiar plików punktów kontrolnych ze stanem PRECREATEDw KB. Liczy się w kierunku nieprzydzielonego miejsca w bazie danych jako całości. Jeśli na przykład istnieje 600 000 KB wstępnie utworzonych plików punktu kontrolnego, ta kolumna zawiera wartość 600000 KB. |
xtp_used |
varchar(18) | Łączny rozmiar plików punktów kontrolnych ze stanami UNDER CONSTRUCTION, ACTIVEi MERGE TARGETw kb. Ta wartość to miejsce na dysku aktywnie używane dla danych w tabelach zoptymalizowanych pod kątem pamięci. |
xtp_pending_truncation |
varchar(18) | Całkowity rozmiar plików punktów kontrolnych ze stanem WAITING_FOR_LOG_TRUNCATIONw KB. Ta wartość to miejsce na dysku używane dla plików punktów kontrolnych, które oczekują na oczyszczanie, po obcięciu dziennika. |
Jeśli @objname zostanie pominięta, wartość @oneresultset to 1, a @include_total_xtp_storage to 1, zostanie zwrócony następujący pojedynczy zestaw wyników, aby podać bieżące informacje o rozmiarze bazy danych. Jeśli @include_total_xtp_storage to 0 (wartość domyślna), zostaną pominięte trzy ostatnie kolumny.
| Nazwa kolumny | Typ danych | Opis |
|---|---|---|
database_name |
nvarchar(128) | Nazwa bieżącej bazy danych. |
database_size |
varchar(18) | Rozmiar bieżącej bazy danych w megabajtach.
database_size zawiera zarówno dane, jak i pliki dziennika. Jeśli baza danych ma grupę MEMORY_OPTIMIZED_DATA plików, ta wartość zawiera łączny rozmiar na dysku wszystkich plików punktów kontrolnych w grupie plików. |
unallocated space |
varchar(18) | Miejsce w bazie danych, która nie jest zarezerwowana dla obiektów bazy danych. Jeśli baza danych ma grupę MEMORY_OPTIMIZED_DATA plików, ta wartość zawiera łączny rozmiar na dysku plików punktu kontrolnego ze stanem PRECREATED w grupie plików. |
reserved |
varchar(18) | Całkowita ilość miejsca przydzielonego przez obiekty w bazie danych. |
data |
varchar(18) | Łączna ilość miejsca używanego przez dane. |
index_size |
varchar(18) | Łączna ilość miejsca używanego przez indeksy. |
unused |
varchar(18) | Łączna ilość miejsca zarezerwowanego dla obiektów w bazie danych, ale nie jest jeszcze używana. |
xtp_precreated
1 |
varchar(18) | Całkowity rozmiar plików punktów kontrolnych ze stanem PRECREATEDw KB. Ta wartość jest liczona w kierunku nieprzydzielonego miejsca w bazie danych jako całości. Zwraca wartość NULL , jeśli baza danych nie ma MEMORY_OPTIMIZED_DATA grupy plików z co najmniej jednym kontenerem. |
xtp_used
1 |
varchar(18) | Łączny rozmiar plików punktów kontrolnych ze stanami UNDER CONSTRUCTION, ACTIVEi MERGE TARGETw kb. Ta wartość to miejsce na dysku aktywnie używane dla danych w tabelach zoptymalizowanych pod kątem pamięci. Zwraca wartość NULL , jeśli baza danych nie ma MEMORY_OPTIMIZED_DATA grupy plików z co najmniej jednym kontenerem. |
xtp_pending_truncation
1 |
varchar(18) | Całkowity rozmiar plików punktów kontrolnych ze stanem WAITING_FOR_LOG_TRUNCATIONw KB. Ta wartość to miejsce na dysku używane dla plików punktów kontrolnych, które oczekują na oczyszczanie, po obcięciu dziennika. Zwraca wartość NULL , jeśli baza danych nie ma MEMORY_OPTIMIZED_DATA grupy plików z co najmniej jednym kontenerem. |
1 Uwzględniane tylko wtedy , gdy @include_total_xtp_storage jest ustawiona na 1wartość .
Uwagi
Wartość database_size jest zazwyczaj większa niż sumareserved + unallocated space, ponieważ zawiera rozmiar plików dziennika, ale reserved należy unallocated_space wziąć pod uwagę tylko strony danych. W niektórych przypadkach w usłudze Azure Synapse Analytics ta instrukcja może nie być prawdziwa.
Strony używane przez indeksy XML i indeksy pełnotekstowe są uwzględniane w index_size obu zestawach wyników. Po określeniu @objname strony indeksów XML i indeksów pełnotekstowych dla obiektu są również liczone w sumie reserved i index_size wynikach.
Jeśli użycie miejsca jest obliczane dla bazy danych lub obiektu, który jest indeksem przestrzennym, kolumny rozmiaru przestrzeni, takie jak database_size, reservedi index_size, zawierają rozmiar indeksu przestrzennego.
Po określeniu @updateusage aparat bazy danych programu SQL Server skanuje strony danych w bazie danych i wykonuje wszelkie wymagane poprawki do sys.allocation_units widoków katalogu i sys.partitions dotyczących miejsca do magazynowania używanego przez każdą tabelę. Istnieją pewne sytuacje, na przykład po usunięciu indeksu, gdy informacje o przestrzeni dla tabeli mogą nie być aktualne.
@updateusage uruchomienie dużych tabel lub baz danych może zająć trochę czasu. Użyj @updateusage tylko wtedy, gdy podejrzewasz, że zwracane są nieprawidłowe wartości i gdy proces nie ma negatywnego wpływu na innych użytkowników lub procesy w bazie danych. Jeśli jest to preferowane, DBCC UPDATEUSAGE można uruchomić oddzielnie.
Uwaga / Notatka
W przypadku upuszczania lub ponownego kompilowania dużych indeksów albo upuszczania lub obcinania dużych tabel aparat bazy danych wyzywa rzeczywiste przydziały strony i skojarzone z nimi blokady do momentu zatwierdzenia transakcji. Operacje odroczonego usuwania nie zwalniają przydzielonego miejsca natychmiast. W związku z tym wartości zwracane bezpośrednio sp_spaceused po upuszczaniu lub obcinaniu dużego obiektu mogą nie odzwierciedlać rzeczywistego dostępnego miejsca na dysku.
Uprawnienia
Uprawnienie do wykonywania sp_spaceused jest przyznawane roli publicznej . Tylko członkowie stałej roli bazy danych db_owner mogą określać parametr @updateusage.
Przykłady
Odp. Wyświetlanie informacji o miejscu na dysku na temat tabeli
Poniższy przykład raportuje informacje o miejscu na dysku dla Vendor tabeli i jej indeksów.
USE AdventureWorks2022;
GO
EXECUTE sp_spaceused N'Purchasing.Vendor';
GO
B. Wyświetlanie zaktualizowanych informacji o przestrzeni na temat bazy danych
Poniższy przykład podsumowuje miejsce używane w bieżącej bazie danych i używa opcjonalnego parametru @updateusage w celu zapewnienia zwracania bieżących wartości.
USE AdventureWorks2022;
GO
EXECUTE sp_spaceused @updateusage = N'TRUE';
GO
C. Wyświetlanie informacji o użyciu miejsca na temat tabeli zdalnej skojarzonej z tabelą z włączoną obsługą stretch
Poniższy przykład podsumowuje miejsce używane przez tabelę zdalną skojarzona z tabelą z włączoną obsługą stretch przy użyciu argumentu @mode w celu określenia obiektu docelowego zdalnego. Aby uzyskać więcej informacji, zobacz Stretch Database.
USE StretchedAdventureWorks2022;
GO
EXECUTE sp_spaceused N'Purchasing.Vendor', @mode = 'REMOTE_ONLY';
D. Wyświetlanie informacji o użyciu miejsca dla bazy danych w jednym zestawie wyników
Poniższy przykład zawiera podsumowanie użycia miejsca dla bieżącej bazy danych w jednym zestawie wyników.
USE AdventureWorks2022;
GO
EXECUTE sp_spaceused @oneresultset = 1;
E. Wyświetlanie informacji o użyciu miejsca dla bazy danych z co najmniej jedną grupą plików MEMORY_OPTIMIZED w jednym zestawie wyników
Poniższy przykład zawiera podsumowanie użycia miejsca dla bieżącej bazy danych z co najmniej jedną grupą plików w jednym MEMORY_OPTIMIZED zestawie wyników.
USE WideWorldImporters;
GO
EXECUTE sp_spaceused
@updateusage = 'FALSE',
@mode = 'ALL',
@oneresultset = '1',
@include_total_xtp_storage = '1';
GO
F. Wyświetlanie informacji o użyciu miejsca dla obiektu tabeli MEMORY_OPTIMIZED w bazie danych
Poniższy przykład zawiera podsumowanie użycia miejsca dla MEMORY_OPTIMIZED obiektu tabeli w bieżącej bazie danych z co najmniej jedną MEMORY_OPTIMIZED grupą plików.
USE WideWorldImporters;
GO
EXECUTE sp_spaceused
@objname = N'VehicleTemperatures',
@updateusage = 'FALSE',
@mode = 'ALL',
@oneresultset = '0',
@include_total_xtp_storage = '1';
GO
Treści powiązane
- STWÓRZ INDEKS (Transact-SQL)
- CREATE TABLE (Transact-SQL)
- DBCC UPDATEUSAGE (Transact-SQL)
- Service Broker
- sys.allocation_units (Transact-SQL)
- sys.indexes (Transact-SQL)
- sys.index_columns (Transact-SQL)
- sys.objects (Transact-SQL)
- sys.partitions (Transact-SQL)
- System procedur składowanych (Transact-SQL)