sp_spaceused (Transact-SQL)

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 a temasConvenciones de sintaxis de Transact-SQL

Sintaxis

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

Argumentos

  • [ [ @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 sólo 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 los resultados para toda la base de datos.

    objname es de tipo nvarchar(776) y su valor predeterminado es NULL.

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

Valores de código de retorno

0 (correcto) o 1 (error)

Conjuntos de resultados

Si se omite objname, se devuelven los conjuntos de resultados siguientes para proporcionar la información de tamaño de la base de datos actual.

Nombre de 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.

unallocated space

varchar(18)

Espacio de la base de datos que no se ha reservado para objetos de base de datos.

Nombre de columna

Tipo de datos

Descripción

reserved

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.

unused

varchar(18)

Espacio total reservado para los objetos de la base de datos, pero no utilizado todavía.

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

Nombre de 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 es necesario el nombre del esquema, utilice las vistas de administración dinámica sys.dm_db_partition_stats o sys.dm_db_index_physical_stats para obtener una información de tamaño equivalente.

rows

char(11)

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.

reserved

varchar(18)

Espacio total 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.

unused

varchar(18)

Espacio total reservado para objname, pero sin utilizar todavía.

Notas

database_size siempre será mayor que la suma de reserved + unallocated space porque incluye el tamaño de los archivos de registro, mientras que reserved y unallocated_space tienen en cuenta sólo las páginas de datos.

Las páginas utilizadas por los índices XML y los índices de texto se incluyen en index_size para ambos conjuntos de resultados. Si se especifica objname, se cuentan también las páginas para los índices XML y de texto completo del objeto en los resultados totales de reserved e index_size.

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

Si se especifica updateusage, SQL Server Database Engine (Motor de base de datos de SQL Server) 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 sys.partitions en relación con el 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. El parámetro updateusage puede tardar algún tiempo en ejecutarse en tablas o bases de datos de gran tamaño. Utilice updateusage sólo cuando sospeche que están devolviéndose valores incorrectos y cuando el proceso no afecte negativamente a otros usuarios o procesos de la base de datos. Si se prefiere, DBCC UPDATEUSAGE puede ejecutarse por separado.

[!NOTA]

Al quitar o volver a crear índices grandes, o quitar o truncar tablas grandes, el Database Engine (Motor de base de datos) difiere las cancelaciones de asignación de páginas y los bloqueos asociados hasta que se confirme la transacción. Las operaciones de eliminación diferidas no liberan inmediatamente el espacio asignado. Por lo tanto, es posible que los valores devueltos por sp_spaceused inmediatamente después de quitar o truncar un objeto grande no reflejen el espacio en disco disponible real. Para obtener más información sobre las asignaciones diferidas, vea Quitar y volver a generar objetos grandes.

Permisos

El permiso para ejecutar sp_spaceused se otorga a la función public. Sólo los miembros de la función fija 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 AdventureWorks;
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 AdventureWorks;
GO
EXEC sp_spaceused @updateusage = N'TRUE';
GO