DBCC UPDATEUSAGE (Transact-SQL)

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.

Icono de vínculo a temasConvenciones 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
    Es el nombre o el identificador 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 ajustarse a las reglas de los identificadores.

  • table_name | table_id | view_name | view_id
    Es el nombre o el identificador 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
    Es el identificador o el nombre del índice que se va a utilizar. 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 informativos.

  • 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.

Comentarios

Si una tabla o un índice tienen particiones, DBCC UPDATEUSAGE corrige los recuentos de las filas, las páginas utilizadas, las páginas reservadas, las páginas hoja y las páginas de datos. Si no hay imprecisiones en las tablas del sistema, DBCC UPDATEUSAGE no devuelve datos. Si se encuentran y se corrigen imprecisiones y no se utiliza 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 con el fin de solucionar el problema.

Prácticas recomendadas

  • Ejecute siempre DBCC UPDATEUSAGE después de actualizar una base de datos de SQL Server 2000. Los recuentos de filas y páginas se corrigen y se mantienen después.

  • No ejecute DBCC UPDATEUSAGE habitualmente con bases de datos creadas en SQL Server 2005 o versiones posteriores, o con bases de datos actualizadas que se hayan corregido una vez con DBCC UPDATEUSAGE. Dado que DBCC UPDATEUSAGE puede tardar algún tiempo en ejecutarse con tablas o bases de datos grandes, no se debería utilizar a menos que sospeche que sp_spaceused está devolviendo valores incorrectos.

  • 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 (los valores pueden variar):

Ejecución de DBCC completada. Si hay mensajes de error, consulte al administrador del sistema.

Permisos

Debe pertenecer a la función fija de servidor sysadmin o a la función de base de datos fija db_owner.

Ejemplos

A. Actualizar 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. Actualizar los recuentos de páginas o filas, o ambos, y suprimir los mensajes informativos

En el siguiente ejemplo se especifica AdventureWorks2008R2 como nombre de la base de datos y se suprimen todos los mensajes informativos.

USE AdventureWorks2008R2;
GO
DBCC UPDATEUSAGE (AdventureWorks2008R2) WITH NO_INFOMSGS; 
GO

C. Actualizar los recuentos de páginas o filas, o ambos, para una tabla

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 AdventureWorks2008R2.

USE AdventureWorks2008R2;
GO
DBCC UPDATEUSAGE (AdventureWorks2008R2,"HumanResources.Employee");
GO

D. Actualizar recuentos de página o fila, o ambos, para un índice específico de una tabla

En el siguiente ejemplo se especifica un nombre de índice.

USE AdventureWorks2008R2;
GO
DBCC UPDATEUSAGE (AdventureWorks2008R2, "HumanResources.Employee", IX_Employee_OrganizationLevel_OrganizationNode);
GO