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 можно запускать отдельно.
![]() |
---|
При удалении или перестроении крупных индексов либо удалении или усечении крупных таблиц компонент 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)