DBCC UPDATEUSAGE (Transact-SQL)
Se aplica a: SQL Server Azure SQL Database Azure SQL Managed Instance
Informa sobre imprecisiones de recuento de filas y páginas de las vistas de catálogo y las corrige. Estas imprecisiones pueden causar la devolución de informes incorrectos sobre uso de espacio por parte del procedimiento almacenado del sistema sp_spaceused
.
Convenciones de sintaxis de Transact-SQL
Sintaxis
DBCC UPDATEUSAGE
( { database_name | database_id | 0 }
[ , { table_name | table_id | view_name | view_id }
[ , { index_name | index_id } ] ]
) [ WITH [ NO_INFOMSGS ] [ , ] [ COUNT_ROWS ] ]
Argumentos
database_name | database_id | 0
El nombre o el id. de la base de datos sobre cuyas estadísticas de uso de espacio se va a informar y las cuales se van a corregir. Si se especifica 0, se utiliza la base de datos actual. Los nombres de las bases de datos deben cumplir las reglas de los identificadores.
table_name | table_id | view_name | view_id
El nombre o el id. de la tabla o la vista indizada sobre cuyas estadísticas de uso de espacio se va a informar y las que se van a corregir. Los nombres de las tablas y las vistas deben ajustarse a las reglas de los identificadores.
index_id | index_name
El id. o el nombre del índice que se va a usar. Si no se especifica, la instrucción procesa todos los índices de la tabla o la vista especificada.
WITH
Permite la especificación de opciones.
NO_INFOMSGS
Suprime todos los mensajes de información.
COUNT_ROWS
Especifica que la columna row count se actualiza con el recuento actual del número de filas de la tabla o la vista.
Observaciones
DBCC UPDATEUSAGE
corrige los recuentos de las filas, las páginas usadas, las páginas reservadas, las páginas hoja y las páginas de datos de cada partición en una tabla o índice. Si no hay imprecisiones en las tablas del sistema, DBCC UPDATEUSAGE
no devuelve datos. Si se encuentran y se corrigen imprecisiones y no se usa WITH NO_INFOMSGS, DBCC UPDATEUSAGE
devuelve las filas y las columnas que se están actualizando en las tablas del sistema.
DBCC CHECKDB
se ha mejorado para detectar si los recuentos de páginas o filas devuelven valores negativos. En caso de que se detecte un recuento negativo, la salida de DBCC CHECKDB
contiene una advertencia y una recomendación para que se ejecute DBCC UPDATEUSAGE
para solucionar el problema.
Procedimientos recomendados
Se recomienda lo siguiente:
- No ejecute
DBCC UPDATEUSAGE
de forma rutinaria, ya que SQL Server mantiene los metadatos en la mayoría de las circunstancias.DBCC UPDATEUSAGE
debe ejecutarse según sea necesario, por ejemplo, si sospecha quesp_spaceused
devuelve valores incorrectos.DBCC UPDATEUSAGE
El parámetro puede tardar algún tiempo en ejecutarse en tablas o bases de datos de gran tamaño. - Considere ejecutar
DBCC UPDATEUSAGE
habitualmente, por ejemplo cada semana, solo si la base de datos sufre con frecuencia modificaciones del Lenguaje de definición de datos (DDL), por ejemplo, con las instrucciones CREATE, ALTER o DROP.
Conjuntos de resultados
DBCC UPDATEUSAGE
devuelve lo siguiente (los valores pueden variar):
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
Permisos
Debe pertenecer al rol fijo de servidor sysadmin o al rol fijo de base de datos db_owner .
Ejemplos
A. Actualización de recuentos de páginas o filas, o ambos, para todos los objetos de la base de datos actual
En el siguiente ejemplo se especifica 0
como nombre de la base de datos y DBCC UPDATEUSAGE
devuelve información actualizada del recuento de filas o páginas de la base de datos actual.
DBCC UPDATEUSAGE (0);
GO
B. Actualización de recuentos de páginas o filas, o ambos, para AdventureWorks y suprimir los mensajes informativos
En el siguiente ejemplo se especifica AdventureWorks2022
como nombre de la base de datos y se suprimen todos los mensajes informativos.
DBCC UPDATEUSAGE (AdventureWorks2022) WITH NO_INFOMSGS;
GO
C. Actualización de recuentos de páginas o filas, o ambos, para la tabla Employee
En el siguiente ejemplo se devuelve información actualizada del recuento de filas o páginas de la tabla Employee
de la base de datos AdventureWorks2022
.
DBCC UPDATEUSAGE (AdventureWorks2022, 'HumanResources.Employee');
GO
D. Actualización de recuentos de página o fila, o ambos, para un índice específico de una tabla
En el siguiente ejemplo se especifica IX_Employee_ManagerID
como nombre de índice.
DBCC UPDATEUSAGE (AdventureWorks2022, 'HumanResources.Employee', IX_Employee_OrganizationLevel_OrganizationNode);
GO