sp_spaceused (Transact-SQL)

Se aplica a: síSQL Server (todas las versiones admitidas) SíAzure SQL Database SíInstancia administrada de Azure SQL síAzure Synapse Analytics síAlmacenamiento de datos paralelos

Muestra el número de filas, el espacio de disco reservado y el espacio de disco utilizado por una tabla, vista indizada o cola de Service Broker de la base de datos actual, o bien muestra el espacio de disco reservado y el que utiliza la base de datos completa.

Icono de vínculo de tema Convenciones de sintaxis de Transact-SQL

Sintaxis

sp_spaceused [[ @objname = ] 'objname' ]   
[, [ @updateusage = ] 'updateusage' ]  
[, [ @mode = ] 'mode' ]  
[, [ @oneresultset = ] oneresultset ]  
[, [ @include_total_xtp_storage = ] include_total_xtp_storage ]

Nota

El grupo de SQL sin servidor no admite esta sintaxis en Azure Synapse Analytics.

Argumentos

Para y , debe especificar parámetros con nombre (por ejemplo, en lugar de Azure Synapse Analytics Almacenamiento de datos paralelos sp_spaceused sp_spaceused (@objname= N'Table1'); basarse en la posición ordinal de los parámetros).

[ @objname = ] 'objname'

Se trata del nombre completo o incompleto de la tabla, vista indizada o cola para la que se solicita información de uso del espacio. Las comillas solo son necesarias si se especifica un nombre de objeto completo. Si se proporciona un nombre de objeto completo, incluido el nombre de una base de datos, el nombre de la base de datos debe ser el nombre de la base de datos actual.
Si no se especifica objname, se devuelven resultados para toda la base de datos.
objname es nvarchar(776), con un valor predeterminado de NULL.

Nota

Azure Synapse Analytics y Almacenamiento de datos paralelos solo admiten objetos de base de datos y tabla.

[ @updateusage = ] 'updateusage' Indica que DBCC UPDATEUSAGE debe ejecutarse para actualizar la información de uso del espacio. Cuando no se especifica objname, la instrucción se ejecuta en toda la base de datos; de lo contrario, la instrucción se ejecuta en objname. Los valores pueden ser true o false. updateusage es varchar(5), con un valor predeterminado de false.

[ @mode = ] 'mode' Indica el ámbito de los resultados. Para una tabla o base de datos extendidos, el parámetro mode permite incluir o excluir la parte remota del objeto. Para obtener más información, vea Stretch Database.

El argumento mode puede tener los siguientes valores:

Value Descripción
ALL Devuelve las estadísticas de almacenamiento del objeto o la base de datos, incluida la parte local y la parte remota.
LOCAL_ONLY Devuelve las estadísticas de almacenamiento de solo la parte local del objeto o la base de datos. Si el objeto o la base de datos no están habilitados para Stretch, devuelve las mismas estadísticas que cuando @mode = ALL.
REMOTE_ONLY Devuelve las estadísticas de almacenamiento de solo la parte remota del objeto o la base de datos. Esta opción genera un error cuando se cumple una de las condiciones siguientes:

La tabla no está habilitada para Stretch.

La tabla está habilitada para Stretch, pero nunca ha habilitado la migración de datos. En este caso, la tabla remota aún no tiene un esquema.

El usuario ha eliminado manualmente la tabla remota.

El aprovisionamiento del archivo de datos remoto devolvió un estado correcto, pero, de hecho, no se pudo.

mode es varchar(11), con un valor predeterminado de N'ALL'.

[ @oneresultset = ] oneresultset Indica si se debe devolver un único conjunto de resultados. El argumento oneresultset puede tener los siguientes valores:

Value Descripción
0 Cuando @ objname es null o no se especifica, se devuelven dos conjuntos de resultados. Dos conjuntos de resultados es el comportamiento predeterminado.
1 Cuando @ objname = null o no se especifica, se devuelve un único conjunto de resultados.

oneresultset es bit, con un valor predeterminado de 0.

[ @include_total_xtp_storage] 'include_total_xtp_storage' Se aplica a: SQL Server 2017 (14.x) , SQL Database .

Cuando @oneresultset es =1, el parámetro determina si el único conjunto de @include_total_xtp_storage resultados incluye columnas para MEMORY_OPTIMIZED_DATA almacenamiento. El valor predeterminado es 0, es decir, de forma predeterminada (si se omite el parámetro), las columnas XTP no se incluyen en el conjunto de resultados.

Valores de código de retorno

0 (correcto) o 1 (error)

Conjuntos de resultados

Si se omite objname y el valor de oneresultset es 0, se devuelven los siguientes conjuntos de resultados para proporcionar información de tamaño de base de datos actual.

Nombre de la columna Tipo de datos Descripción
database_name nvarchar(128) Nombre de la base de datos actual.
database_size varchar(18) Tamaño de la base de datos actual en megabytes. database_size archivos de datos y de registro.
espacio sin asignar varchar(18) Espacio de la base de datos que no se ha reservado para objetos de base de datos.
Nombre de la columna Tipo de datos Descripción
Reservados varchar(18) Espacio total asignado por los objetos de la base de datos.
data varchar(18) Cantidad total de espacio utilizado por los datos.
index_size varchar(18) Cantidad total de espacio utilizado por índices.
Inusitado varchar(18) Espacio total reservado para los objetos de la base de datos, pero no utilizado todavía.

Si se omite objname y el valor de oneresultset es 1, se devuelve el siguiente conjunto de resultados único para proporcionar información de tamaño de base de datos actual.

Nombre de la columna Tipo de datos Descripción
database_name nvarchar(128) Nombre de la base de datos actual.
database_size varchar(18) Tamaño de la base de datos actual en megabytes. database_size incluye archivos de datos y de registro.
espacio sin asignar varchar(18) Espacio de la base de datos que no se ha reservado para objetos de base de datos.
Reservados varchar(18) Espacio total asignado por los objetos de la base de datos.
data varchar(18) Cantidad total de espacio utilizado por los datos.
index_size varchar(18) Cantidad total de espacio utilizado por índices.
Inusitado varchar(18) Espacio total reservado para los objetos de la base de datos, pero no utilizado todavía.

Si se especifica objname, se devuelve el siguiente conjunto de resultados para el objeto especificado.

Nombre de la columna Tipo de datos Descripción
name nvarchar(128) Nombre del objeto del que se solicitó la información de utilización de espacio.

El nombre del esquema del objeto no se devuelve. Si se requiere el nombre del esquema, use las vistas sys.dm_db_partition_stats o sys.dm_db_index_physical_stats de administración dinámica para obtener información de tamaño equivalente.
rows char(20) Número de filas de la tabla. Si el objeto especificado es una cola de Service Broker, esta columna indica el número de mensajes de la misma.
Reservados varchar(18) Cantidad total de espacio reservado para objname.
data varchar(18) Cantidad total de espacio utilizado por los datos en objname.
index_size varchar(18) Cantidad total de espacio utilizado por los índices en objname.
Inusitado varchar(18) Cantidad total de espacio reservado para objname pero que aún no se ha usado.

Este es el modo predeterminado, cuando no se especifica ningún parámetro. Se devuelven los siguientes conjuntos de resultados que detallan la información de tamaño de la base de datos en disco.

Nombre de la columna Tipo de datos Descripción
database_name nvarchar(128) Nombre de la base de datos actual.
database_size varchar(18) Tamaño de la base de datos actual en megabytes. database_size archivos de datos y de registro. Si la base de datos tiene MEMORY_OPTIMIZED_DATA grupo de archivos, esto incluye el tamaño total en disco de todos los archivos de punto de comprobación del grupo de archivos.
espacio sin asignar varchar(18) Espacio de la base de datos que no se ha reservado para objetos de base de datos. Si la base de datos tiene MEMORY_OPTIMIZED_DATA grupo de archivos, esto incluye el tamaño total en disco de los archivos de punto de comprobación con el estado PRECREATED en el grupo de archivos.

Espacio utilizado por las tablas de la base de datos: (este conjunto de resultados no refleja las tablas optimizadas para memoria, ya que no hay ninguna contabilidad por tabla del uso del disco)

Nombre de la columna Tipo de datos Descripción
Reservados varchar(18) Espacio total asignado por los objetos de la base de datos.
data varchar(18) Cantidad total de espacio utilizado por los datos.
index_size varchar(18) Cantidad total de espacio utilizado por índices.
Inusitado varchar(18) Espacio total reservado para los objetos de la base de datos, pero no utilizado todavía.

El siguiente conjunto de resultados se devuelve SOLO SI la base de datos tiene un MEMORY_OPTIMIZED_DATA de archivos con al menos un contenedor:

Nombre de la columna Tipo de datos Descripción
xtp_precreated varchar(18) Tamaño total de los archivos de punto de comprobación con el estado PRECREATED, en KB. Cuenta para el espacio sin asignar de la base de datos en su conjunto. [Por ejemplo, si hay 600 000 KB de archivos de punto de comprobación creados previamente, esta columna contiene "600 000 KB"]
xtp_used varchar(18) Tamaño total de los archivos de punto de comprobación con los estados UNDER CONSTRUCTION, ACTIVE y MERGE TARGET, en KB. Este es el espacio en disco que se usa activamente para los datos de las tablas optimizadas para memoria.
xtp_pending_truncation varchar(18) Tamaño total de los archivos de punto de control con WAITING_FOR_LOG_TRUNCATION estado, en KB. Este es el espacio en disco que se usa para los archivos de punto de comprobación que están a la espera de la limpieza, una vez que se produce el truncamiento del registro.

Si se omite objname, el valor de oneresultset es 1 y include_total_xtp_storage es 1, se devuelve el siguiente conjunto de resultados único para proporcionar información de tamaño de base de datos actual. Si include_total_xtp_storage es 0 (valor predeterminado), se omiten las tres últimas columnas.

Nombre de la columna Tipo de datos Descripción
database_name nvarchar(128) Nombre de la base de datos actual.
database_size varchar(18) Tamaño de la base de datos actual en megabytes. database_size archivos de datos y de registro. Si la base de datos tiene MEMORY_OPTIMIZED_DATA grupo de archivos, esto incluye el tamaño total en disco de todos los archivos de punto de comprobación del grupo de archivos.
espacio sin asignar varchar(18) Espacio de la base de datos que no se ha reservado para objetos de base de datos. Si la base de datos tiene MEMORY_OPTIMIZED_DATA grupo de archivos, esto incluye el tamaño total en disco de los archivos de punto de comprobación con el estado PRECREATED en el grupo de archivos.
Reservados varchar(18) Espacio total asignado por los objetos de la base de datos.
data varchar(18) Cantidad total de espacio utilizado por los datos.
index_size varchar(18) Cantidad total de espacio utilizado por índices.
Inusitado varchar(18) Espacio total reservado para los objetos de la base de datos, pero no utilizado todavía.
xtp_precreated varchar(18) Tamaño total de los archivos de punto de comprobación con el estado PRECREATED, en KB. Esto cuenta para el espacio sin asignar de la base de datos en su conjunto. Devuelve NULL si la base de datos no tiene un memory_optimized_data de archivos con al menos un contenedor. Esta columna solo se incluye si @include_total_xtp_storage =1.
xtp_used varchar(18) Tamaño total de los archivos de punto de comprobación con los estados UNDER CONSTRUCTION, ACTIVE y MERGE TARGET, en KB. Este es el espacio en disco que se usa activamente para los datos de las tablas optimizadas para memoria. Devuelve NULL si la base de datos no tiene un memory_optimized_data de archivos con al menos un contenedor. Esta columna solo se incluye si @include_total_xtp_storage =1.
xtp_pending_truncation varchar(18) Tamaño total de los archivos de punto de comprobación con WAITING_FOR_LOG_TRUNCATION estado, en KB. Este es el espacio en disco que se usa para los archivos de punto de comprobación que esperan la limpieza, una vez que se produce el truncamiento del registro. Devuelve NULL si la base de datos no tiene un memory_optimized_data de archivos con al menos un contenedor. Esta columna solo se incluye si @include_total_xtp_storage=1 .

Comentarios

database_size suele ser mayor que la suma del espacio reservado sin asignar porque incluye el tamaño de los archivos de registro, pero las páginas reservadas y reservadas unallocated_space solo las páginas de + datos. En algunos casos con Azure Synapse Analytics, es posible que esta instrucción no sea verdadera.

Las páginas que usan los índices XML y los índices de texto completo se incluyen en index_size para ambos conjuntos de resultados. Cuando se especifica objname, las páginas de los índices XML y los índices de texto completo del objeto también se cuentan en el total de resultados reservados index_size datos.

Si se calcula el uso de espacio para una base de datos o un objeto que tiene un índice espacial, las columnas de tamaño de espacio, como database_size, reservada y index_size, incluyen el tamaño del índice espacial.

Cuando se especifica updateusage, examina las páginas de datos de la base de datos y realiza las correcciones necesarias en las vistas de catálogo sys.allocation_units y Motor de base de datos de SQL Server sys.partitions con respecto al espacio de almacenamiento utilizado por cada tabla. Existen algunas situaciones, como por ejemplo después de quitar un índice, en las que la información de espacio para la tabla podría no estar actualizada. updateusage puede tardar algún tiempo en ejecutarse en tablas o bases de datos grandes. Use updateusage solo cuando sospeche que se devuelven valores incorrectos y cuando el proceso no tendrá un efecto adverso en otros usuarios o procesos de la base de datos. Si se prefiere, DBCC UPDATEUSAGE puede ejecutarse por separado.

Nota

Al quitar o volver a generar índices grandes, o al quitar o truncar tablas grandes, el Motor de base de datos difiere las cancelaciones de asignación de páginas, así como sus bloqueos asociados, hasta que se confirma la transacción. Las operaciones de eliminación diferidas no liberan inmediatamente el espacio asignado. Por lo tanto, los valores devueltos por sp_spaceused inmediatamente después de quitar o truncar un objeto grande pueden no reflejar el espacio en disco real disponible.

Permisos

El permiso para ejecutar sp_spaceused se otorga al rol public . Solo los miembros del rol fijo de base de datos db_owner pueden especificar el parámetro @updateusage.

Ejemplos

A. Mostrar información de espacio en disco acerca de una tabla

El siguiente ejemplo muestra información de espacio en disco para la tabla Vendor y sus índices.

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

B. Mostrar información de espacio actualizada acerca de una base de datos

En este ejemplo se resume el espacio utilizado en la base de datos actual y se utiliza el parámetro opcional @updateusage para garantizar que se devuelvan los valores actuales.

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

C. Mostrar información de uso de espacio sobre la tabla remota asociada a una tabla habilitada para Stretch

En el ejemplo siguiente se resume el espacio utilizado por la tabla remota asociada a una tabla habilitada para Stretch mediante el argumento @ mode para especificar el destino remoto. Para obtener más información, vea Stretch Database.

USE StretchedAdventureWorks2016  
GO  
EXEC sp_spaceused N'Purchasing.Vendor', @mode = 'REMOTE_ONLY'  

D. Mostrar información de uso de espacio para una base de datos en un único conjunto de resultados

En el ejemplo siguiente se resume el uso de espacio para la base de datos actual en un único conjunto de resultados.

USE AdventureWorks2016  
GO  
EXEC sp_spaceused @oneresultset = 1  

E. Mostrar información de uso de espacio para una base de datos con al menos MEMORY_OPTIMIZED grupo de archivos en un único conjunto de resultados

En el ejemplo siguiente se resume el uso de espacio para la base de datos actual con al menos MEMORY_OPTIMIZED grupo de archivos en un único conjunto de resultados.

USE WideWorldImporters
GO
EXEC sp_spaceused @updateusage = 'FALSE', @mode = 'ALL', @oneresultset = '1', @include_total_xtp_storage = '1';
GO

F. Mostrar información de uso de espacio para un MEMORY_OPTIMIZED de tabla en una base de datos.

En el ejemplo siguiente se resume el uso de espacio para un MEMORY_OPTIMIZED de tabla en la base de datos actual con al menos un MEMORY_OPTIMIZED de archivos.

USE WideWorldImporters
GO
EXEC sp_spaceused
@objname = N'VehicleTemparatures',
@updateusage = 'FALSE',
@mode = 'ALL',
@oneresultset = '0',
@include_total_xtp_storage = '1';
GO

Vea también

CREATE INDEX (Transact-SQL)
CREATE TABLE (Transact-SQL)
DBCC UPDATEUSAGE (Transact-SQL)
SQL Server Service Broker
sys.allocation_units (Transact-SQL)
sys.indexes (Transact-SQL)
sys.index_columns (Transact-SQL)
sys.objects (Transact-SQL)
sys.partitions (Transact-SQL)
Procedimientos almacenados del sistema (Transact-SQL)