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 SQL Server 2005 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 temas Convenciones de sintaxis de Transact-SQL


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

[ @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.

Si se omite objname, se devuelven los siguientes conjuntos de resultados 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 siguiente conjunto de resultados 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 se requiere 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 no utilizado todavía.

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, las páginas para los índices XML y de texto del objeto se cuentan también en los resultados totales de reserved e index_size.

Si se especifica updateusage, el SQL Server 2005 Database Engine (Motor de base de datos de SQL Server 2005) explora 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.

ms188776.note(es-es,SQL.90).gifNota:
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.

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.

0 (correcto) o 1 (error)

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

Adiciones de comunidad

AGREGAR
Mostrar: