Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Относится к:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Система аналитической платформы (PDW)
SQL база данных в Microsoft Fabric
В системной хранимой процедуре отображается следующее sp_spaceused :
количество строк, зарезервированных дискового пространства и дискового пространства, используемого таблицей, индексированного представления или очереди Service Broker в текущей базе данных
дисковое пространство зарезервировано и используется всей базой данных
Соглашения о синтаксисе Transact-SQL
Синтаксис
sp_spaceused
[ [ @objname = ] N'objname' ]
[ , [ @updateusage = ] 'updateusage' ]
[ , [ @mode = ] 'mode' ]
[ , [ @oneresultset = ] oneresultset ]
[ , [ @include_total_xtp_storage = ] include_total_xtp_storage ]
[ ; ]
Примечание.
Этот синтаксис не поддерживается бессерверным пулом SQL в Azure Synapse Analytics.
Аргументы
Для Системы платформы Аналитики и аналитики Azure Synapse Analytics (PDW) sp_spaceused необходимо указать именованные параметры (например sp_spaceused (@objname= N'Table1');), а не полагаться на порядковое положение параметров.
[ @objname = ] N'objname'
Полное или неквалифицированное имя таблицы, индексированного представления или очереди, для которой запрашиваются сведения об использовании пространства.
@objname — nvarchar(776) с значением по умолчаниюNULL. Кавычки необходимы только в том случае, если указано уточненное имя объекта. Если указано полностью уточненное имя, включающее имя базы данных, именем базы данных должно быть имя текущей базы данных.
Если @objname не задано, результаты возвращаются для всей базы данных.
Примечание.
Azure Synapse Analytics и analytics Platform System (PDW) поддерживают только объекты базы данных и таблиц.
[ @updateusage = ] 'updateusage'
DBCC UPDATEUSAGE Указывает, что следует запускать для обновления сведений об использовании пространства.
@updateusage — varchar(5) с значением по умолчаниюfalse. Если @objname не указан, инструкция выполняется во всей базе данных. В противном случае инструкция выполняется в @objname. Возможные значения — true или false.
[ @mode = ] 'mode'
Указывает область результатов. Для растянутой таблицы или базы данных параметр @mode позволяет включить или исключить удаленную часть объекта. Дополнительные сведения см. в разделе Stretch Database.
Внимание
Stretch Database устарел в SQL Server 2022 (16.x) и База данных SQL Azure. Эта функция будет удалена в будущей версии ядро СУБД. Избегайте использования этого компонента в новых разработках и запланируйте изменение существующих приложений, в которых он применяется.
@mode — varchar(11) и может быть одним из этих значений.
| значение | Описание |
|---|---|
ALL (по умолчанию) |
Возвращает статистику хранения объекта или базы данных, включая локальную часть и удаленную часть. |
LOCAL_ONLY |
Возвращает статистику хранения только локальной части объекта или базы данных. Если объект или база данных не включена Stretch, возвращает ту же статистику, что и при @modeALL. |
REMOTE_ONLY |
Возвращает статистику хранения только удаленной части объекта или базы данных. Этот параметр вызывает ошибку, если одно из следующих условий имеет значение true: Таблица не включена для Stretch. Таблица включена для Stretch, но вы никогда не включили миграцию данных. В этом случае удаленная таблица еще не имеет схемы. Пользователь вручную удалял удаленную таблицу. Подготовка удаленного архива данных вернула состояние success, но на самом деле не удалось. |
[ @oneresultset = ] oneresultset
Указывает, следует ли возвращать один результирующий набор. @oneresultset бит и может быть одним из следующих значений:
| значение | Описание |
|---|---|
0 (по умолчанию) |
Если @objname имеет значение NULL или не указано, возвращаются два результирующих набора. |
1 |
Если @objnameNULL не указан или не указан, возвращается один результирующий набор. |
[ @include_total_xtp_storage = ] include_total_xtp_storage
Область применения: SQL Server 2017 (14.x) и более поздних версий и База данных SQL
Если , этот параметр определяет, содержит ли один набор результатов столбцы для 1 хранилища.
@include_total_xtp_storage бит с значением по умолчанию0. Если 1столбцы XTP включены в набор результатов.
Значения кода возврата
0 (успешно) или 1 (сбой).
Результирующий набор
Если @objname опущен и значение @oneresultset0, возвращаются следующие результирующие наборы, чтобы предоставить текущие сведения о размере базы данных.
| Имя столбца | Тип данных | Описание |
|---|---|---|
database_name |
nvarchar(128) | Имя текущей базы данных. |
database_size |
varchar(18) | Размер текущей базы данных в мегабайтах.
database_size включает как файлы данных, так и журналы. |
unallocated space |
varchar(18) | Пространство в базе данных, которая не зарезервирована для объектов базы данных. |
| Имя столбца | Тип данных | Описание |
|---|---|---|
reserved |
varchar(18) | Общий объем пространства, выделенный объектам в базе данных. |
data |
varchar(18) | Общий объем пространства, используемый данными. |
index_size |
varchar(18) | Общий объем пространства, используемый индексами. |
unused |
varchar(18) | Общий объем пространства, зарезервированный для объектов в базе данных, но пока не используемый. |
Если @objname опущен и значение @oneresultset1, возвращается следующий результирующий набор для предоставления текущих сведений о размере базы данных.
| Имя столбца | Тип данных | Описание |
|---|---|---|
database_name |
nvarchar(128) | Имя текущей базы данных. |
database_size |
varchar(18) | Размер текущей базы данных в мегабайтах.
database_size включает как файлы данных, так и журналы. |
unallocated space |
varchar(18) | Пространство в базе данных, которая не зарезервирована для объектов базы данных. |
reserved |
varchar(18) | Общий объем пространства, выделенный объектам в базе данных. |
data |
varchar(18) | Общий объем пространства, используемый данными. |
index_size |
varchar(18) | Общий объем пространства, используемый индексами. |
unused |
varchar(18) | Общий объем пространства, зарезервированный для объектов в базе данных, но пока не используемый. |
Если указан @objname , для указанного объекта возвращается следующий результирующий набор.
| Имя столбца | Тип данных | Описание |
|---|---|---|
name |
nvarchar(128) | Имя объекта, для которого были запрошены сведения об используемом пространстве. Имя схемы объекта не возвращается. Если требуется имя схемы, используйте sys.dm_db_partition_stats или sys.dm_db_index_physical_stats динамические административные представления для получения эквивалентных сведений о размере. |
rows |
char(20) | Количество существующих строк в таблице. Если указанный объект является очередью Service Broker, этот столбец указывает количество сообщений в очереди. |
reserved |
varchar(18) | Общий объем зарезервированного пространства для @objname. |
data |
varchar(18) | Общий объем пространства, используемого данными в @objname. |
index_size |
varchar(18) | Общий объем пространства, используемого индексами в @objname. |
unused |
varchar(18) | Общий объем пространства, зарезервированного для @objname , но еще не использован. |
Этот режим используется по умолчанию, если параметры не указаны. Следующие результирующие наборы возвращают сведения о размере базы данных на диске.
| Имя столбца | Тип данных | Описание |
|---|---|---|
database_name |
nvarchar(128) | Имя текущей базы данных. |
database_size |
varchar(18) | Размер текущей базы данных в мегабайтах.
database_size включает как файлы данных, так и журналы. Если база данных содержит файловую группу, это значение включает общий MEMORY_OPTIMIZED_DATA размер всех файлов контрольных точек на диске в файловой группе. |
unallocated space |
varchar(18) | Пространство в базе данных, которая не зарезервирована для объектов базы данных. Если база данных имеет файловую группу, это значение включает общий MEMORY_OPTIMIZED_DATA размер файлов контрольных точек на диске с состоянием PRECREATED в файловой группе. |
Пространство, используемое таблицами в базе данных. Этот результирующий набор не отражает оптимизированные для памяти таблицы таблицы, так как для каждой таблицы не выполняется учет использования дисков:
| Имя столбца | Тип данных | Описание |
|---|---|---|
reserved |
varchar(18) | Общий объем пространства, выделенный объектам в базе данных. |
data |
varchar(18) | Общий объем пространства, используемый данными. |
index_size |
varchar(18) | Общий объем пространства, используемый индексами. |
unused |
varchar(18) | Общий объем пространства, зарезервированный для объектов в базе данных, но пока не используемый. |
Следующий результирующий набор возвращается только в том случае, если база данных имеет файловую группу с хотя бы одним контейнером MEMORY_OPTIMIZED_DATA :
| Имя столбца | Тип данных | Описание |
|---|---|---|
xtp_precreated |
varchar(18) | Общий размер файлов контрольных точек с состоянием PRECREATEDв КБ. Подсчитывается к нераспределированному пространству в базе данных в целом. Например, если в этом столбце содержится 600000 KB600 000 КБ предварительно созданных файлов контрольных точек. |
xtp_used |
varchar(18) | Общий размер файлов контрольных точек с состояниями UNDER CONSTRUCTIONи ACTIVEMERGE TARGETбазами знаний. Это значение — это место на диске, активно используемое для данных в оптимизированных для памяти таблицах. |
xtp_pending_truncation |
varchar(18) | Общий размер файлов контрольных точек с состоянием WAITING_FOR_LOG_TRUNCATIONв КБ. Это значение — это место на диске, используемое для файлов контрольных точек, ожидающих очистки, после усечения журнала. |
Если @objname опущен, значение @oneresultset равно 1и @include_total_xtp_storage1, возвращается следующий один результирующий набор для предоставления текущих сведений о размере базы данных. Если @include_total_xtp_storage ( 0 по умолчанию), последние три столбца опущены.
| Имя столбца | Тип данных | Описание |
|---|---|---|
database_name |
nvarchar(128) | Имя текущей базы данных. |
database_size |
varchar(18) | Размер текущей базы данных в мегабайтах.
database_size включает как файлы данных, так и журналы. Если база данных содержит файловую группу, это значение включает общий MEMORY_OPTIMIZED_DATA размер всех файлов контрольных точек на диске в файловой группе. |
unallocated space |
varchar(18) | Пространство в базе данных, которая не зарезервирована для объектов базы данных. Если база данных имеет файловую группу, это значение включает общий MEMORY_OPTIMIZED_DATA размер файлов контрольных точек на диске с состоянием PRECREATED в файловой группе. |
reserved |
varchar(18) | Общий объем пространства, выделенный объектам в базе данных. |
data |
varchar(18) | Общий объем пространства, используемый данными. |
index_size |
varchar(18) | Общий объем пространства, используемый индексами. |
unused |
varchar(18) | Общий объем пространства, зарезервированный для объектов в базе данных, но пока не используемый. |
xtp_precreated
1 |
varchar(18) | Общий размер файлов контрольных точек с состоянием PRECREATEDв КБ. Это значение учитывается в отношении нераспределенного пространства в базе данных в целом. Возвращает, NULL если база данных не имеет файловой группы с хотя бы одним контейнером MEMORY_OPTIMIZED_DATA . |
xtp_used
1 |
varchar(18) | Общий размер файлов контрольных точек с состояниями UNDER CONSTRUCTIONи ACTIVEMERGE TARGETбазами знаний. Это значение — это место на диске, активно используемое для данных в оптимизированных для памяти таблицах. Возвращает, NULL если база данных не имеет файловой группы с хотя бы одним контейнером MEMORY_OPTIMIZED_DATA . |
xtp_pending_truncation
1 |
varchar(18) | Общий размер файлов контрольных точек с состоянием WAITING_FOR_LOG_TRUNCATIONв КБ. Это значение — это место на диске, используемое для файлов контрольных точек, ожидающих очистки, после усечения журнала. Возвращает, NULL если база данных не имеет файловой группы с хотя бы одним контейнером MEMORY_OPTIMIZED_DATA . |
1 Только если для @include_total_xtp_storage задано 1значение .
Замечания
Значениеdatabase_size, как правило, больше reserved + unallocated spaceсуммы, так как оно включает размер файлов журнала, но reserved и unallocated_space рассмотрите только страницы данных. В некоторых случаях с Azure Synapse Analytics эта инструкция может не быть верной.
Страницы, используемые XML-индексами и полнотекстовых индексов, включаются index_size в оба результирующих набора. При указании @objname страницы xml-индексов и полнотекстовых индексов для объекта также учитываются в общей reserved сумме и index_size результатах.
Если использование пространства вычисляется для базы данных или объекта, являющегося пространственным индексом, столбцы размера пространства, например database_sizereserved, и index_sizeвключают размер пространственного индекса.
При указании @updateusage SQL Server ядро СУБД сканирует страницы данных в базе данных и sys.allocation_units вносит все необходимые исправления sys.partitions в представления каталога в отношении места хранения, используемого каждой таблицей. Существуют некоторые ситуации, например после удаления индекса, когда сведения о пространстве таблицы могут не быть текущими.
@updateusage может занять некоторое время для выполнения в больших таблицах или базах данных. Используйте @updateusage только в том случае, если возвращаются неправильные значения, и если процесс не оказывает негативного влияния на других пользователей или процессы в базе данных. При желании DBCC UPDATEUSAGE можно выполнять отдельно.
Примечание.
При удалении или перестроении больших индексов или удалении или усечении больших таблиц ядро СУБД откладывает фактическое размещение сделки страниц и связанные с ними блокировки до тех пор, пока транзакция не будет зафиксирована. Отложенные операции удаления немедленно не освобождают выделенное пространство. Таким образом, значения, возвращаемые sp_spaceused сразу после удаления или усечения большого объекта, могут не отражать фактическое свободное место на диске.
Разрешения
Разрешение на выполнение sp_spaceused предоставляется общедоступной роли. Параметр @updateusage могут указывать только члены предопределенной роли базы данных db_owner.
Примеры
А. Отображение сведений о пространстве диска для таблицы
В следующем примере предоставляются сведения о месте на диске для таблицы Vendor и ее индексах.
USE AdventureWorks2022;
GO
EXECUTE sp_spaceused N'Purchasing.Vendor';
GO
В. Отображение обновленных сведений о пространстве базы данных
В следующем примере суммируется пространство, используемое в текущей базе данных, и используется необязательный параметр @updateusage для обеспечения возврата текущих значений.
USE AdventureWorks2022;
GO
EXECUTE sp_spaceused @updateusage = N'TRUE';
GO
В. Отображение сведений об использовании пространства для удаленной таблицы, связанной с таблицей с поддержкой Stretch
В следующем примере приводится сводка пространства, используемого удаленной таблицей, связанной с таблицей с поддержкой Stretch, с помощью аргумента @mode для указания удаленного целевого объекта. Дополнительные сведения см. в разделе Stretch Database.
USE StretchedAdventureWorks2022;
GO
EXECUTE sp_spaceused N'Purchasing.Vendor', @mode = 'REMOTE_ONLY';
Д. Отображение сведений об использовании пространства для базы данных в одном результирующем наборе
В следующем примере приводится сводка использования пространства для текущей базы данных в одном результирующем наборе.
USE AdventureWorks2022;
GO
EXECUTE sp_spaceused @oneresultset = 1;
Е. Отображение сведений об использовании пространства для базы данных с по крайней мере одной MEMORY_OPTIMIZED файловой группой в одном результирующем наборе
В следующем примере приводится сводка использования пространства для текущей базы данных с хотя бы одной MEMORY_OPTIMIZED группой файлов в одном результирующем наборе.
USE WideWorldImporters;
GO
EXECUTE sp_spaceused
@updateusage = 'FALSE',
@mode = 'ALL',
@oneresultset = '1',
@include_total_xtp_storage = '1';
GO
F. Отображение сведений об использовании пространства для объекта таблицы MEMORY_OPTIMIZED в базе данных
В следующем примере приводится сводка использования пространства для объекта таблицы в текущей MEMORY_OPTIMIZED базе данных по крайней мере с одной MEMORY_OPTIMIZED группой файлов.
USE WideWorldImporters;
GO
EXECUTE sp_spaceused
@objname = N'VehicleTemperatures',
@updateusage = 'FALSE',
@mode = 'ALL',
@oneresultset = '0',
@include_total_xtp_storage = '1';
GO
Связанный контент
- Инструкция CREATE INDEX (Transact-SQL)
- CREATE TABLE (Transact-SQL)
- ОБНОВЛЕНИЕ DBCC USAGE (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)
- Системные хранимые процедуры (Transact-SQL)