sp_spaceused (Transact-SQL)

Выводит количество строк, зарезервированное место на диске и место на диске, которое используется таблицей, индексированным представлением или очередью компонента SQL Server 2005 Service Broker в текущей базе данных, либо выводит место на диске, зарезервированное и используемое всей базой данных.

Значок ссылки на разделСоглашения о синтаксисе в Transact-SQL

Синтаксис

sp_spaceused [[ @objname = ] 'objname' ] 
[,[ @updateusage = ] 'updateusage' ]

Аргументы

  • [ @objname=] 'objname'
    Уточненное или неуточненное имя таблицы, индексированного представления или очереди, для которых были запрошены сведения по использованию места на диске. Кавычки необходимы только в том случае, если указано уточненное имя объекта. Если указано полностью уточненное имя, включающее имя базы данных, именем базы данных должно быть имя текущей базы данных.

    Если аргумент objname не указан, результаты возвращаются для всей базы данных.

    Аргумент objname имеет тип nvarchar(776) и значение NULL по умолчанию.

  • [ @updateusage=] 'updateusage'
    Указывает, что для обновления сведений об использовании места на диске следует запустить инструкцию DBCC UPDATEUSAGE. Если аргумент objname не указан, инструкция запускается в отношении всей базы данных. В противном случае она запускается в отношении объекта objname. Возможные значения: true или false. Аргумент updateusage имеет тип varchar(5) и значение false по умолчанию.

Значения кодов возврата

0 (успешное завершение) или 1 (неуспешное завершение)

Результирующие наборы

Если аргумент objname не указан, возвращаются следующие результирующие наборы для предоставления сведений о текущем размере базы данных.

Имя столбца Тип данных Описание

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(11)

Количество существующих строк в таблице. Если объект указан как очередь компонента Service Broker, этот столбец указывает число сообщений в очереди.

reserved

varchar(18)

Общий объем зарезервированного пространства для объекта objname.

data

varchar(18)

Общий объем пространства, используемый данными объекта objname.

index_size

varchar(18)

Общий объем пространства, используемый индексами объекта objname.

unused

varchar(18)

Общий объем пространства, зарезервированный для объекта objname, но пока не используемый.

Замечания

Значение столбца database_size всегда будет больше, чем сумма значений столбцов reserved + unallocated space, потому что он включает размер файлов журналов, а значения столбцов reserved и unallocated_space учитывают только страницы данных.

Страницы XML-индексов и полнотекстовых индексов в обоих результирующих наборах включены в значение столбца index_size. Если указан аргумент objname, страницы XML-индексов и полнотекстовых индексов для этого объекта также учитываются в общих результирующих значениях reserved и index_size.

Если указан аргумент updateusage, компонент SQL Server 2005 Database Engine просматривает страницы данных в базе данных и вносит все необходимые изменения в представления каталога sys.allocation_units и sys.partitions в отношении места для хранения каждой таблицы. Иногда возникают ситуации, например, при удалении индекса, когда сведения о таблице могут устареть. Если указан аргумент updateusage, выполнение процедуры может занимать некоторое время при запуске в отношении больших таблиц или баз данных. Используйте аргумент updateusage только в том случае, если есть сомнения в достоверности возвращаемых значений и если выполнение процедуры не будет неблагоприятно влиять на других пользователей и процессы в базе данных. При необходимости инструкцию DBCC UPDATEUSAGE можно запускать отдельно.

ms188776.note(ru-ru,SQL.90).gifПримечание.
При удалении или перестроении крупных индексов либо удалении или усечении крупных таблиц компонент Database Engine откладывает фактическое освобождение страниц и ассоциированных блокировок до момента фиксации транзакции. Отложенные операции удаления не освобождают выделенное место немедленно. Поэтому значения, возвращаемые процедурой sp_spaceused сразу после удаления или усечения большого объекта, могут не отражать реальный объем доступного места на диске. Дополнительные сведения об отложенном выделении объектов см. в разделе Удаление и повторная сборка больших объектов.

Разрешения

Разрешение на выполнение процедуры sp_spaceused предоставлены роли public. Аргумент @updateusage указывается только членами фиксированной роли базы данных db_owner.

Примеры

А. Вывод сведений о месте на диске для таблицы

В следующем примере предоставляются сведения о месте на диске для таблицы Vendor и ее индексах.

USE AdventureWorks;
GO
EXEC sp_spaceused N'Purchasing.Vendor';
GO

Б. Вывод сведений о месте на диске для базы данных

В следующем примере приводятся итоговые сведения об использовании места на диске текущей базой данных с применением необязательного аргумента @updateusage, чтобы получить достоверные текущие значения.

USE AdventureWorks;
GO
EXEC sp_spaceused @updateusage = N'TRUE';
GO

См. также

Справочник

CREATE INDEX (Transact-SQL)
CREATE TABLE (Transact-SQL)
DBCC UPDATEUSAGE (Transact-SQL)
sys.allocation_units (Transact-SQL)
sys.indexes (Transact-SQL)
sys.index_columns (Transact-SQL)
sys.objects (Transact-SQL)
sys.partitions (Transact-SQL)
Системные хранимые процедуры (Transact-SQL)

Другие ресурсы

Компонент Service Broker

Справка и поддержка

Получение помощи по SQL Server 2005