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. En SQL Server 2005, estos valores siempre se mantienen correctamente. Las bases de datos de SQL Server 2005 nunca deberían mostrar recuentos incorrectos; sin embargo, las bases de datos actualizadas a SQL Server 2005 pueden contener recuentos no válidos. Recomendamos que se ejecute DBCC UPDATEUSAGE después de la actualización a SQL Server 2005 para corregir cualquier recuento no válido.

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 cuyas estadísticas de uso de espacio se van a notificar y 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 cuyas estadísticas de uso de espacio se van a notificar y 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.

Conjuntos de resultados

DBCC UPDATEUSAGE devuelve (los valores pueden variar):

DBCC execution completed. If DBCC printed error messages, contact your system administrator.

Notas

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.

Utilice DBCC UPDATEUSAGE para sincronizar los contadores de uso de espacio. Dado que la ejecución de DBCC UPDATEUSAGE puede tardar bastante en tablas o bases de datos grandes, sólo debería utilizarse cuando se sospeche que sp_spaceused devuelve valores incorrectos. sp_spaceused acepta un parámetro opcional para ejecutar DBCC UPDATEUSAGE antes de devolver la información de espacio de la tabla o el índice.

Actualizar bases de datos

En versiones anteriores de SQL Server, los valores del recuento de filas por tabla y por índice, y del recuento de páginas pueden llegar a ser incorrectos. Las bases de datos que se crearon en versiones anteriores a SQL Server 2005 pueden contener recuentos incorrectos. Por lo tanto, recomendamos que se ejecute DBCC UPDATEUSAGE después de la actualización a SQL Server 2005 para corregir cualquier recuento no válido.

En SQL Server 2005, DBCC CHECKDB se ha mejorado para detectar si los recuentos de páginas o filas se vuelve negativo. 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. Aunque pudiera parecer que la causa del problema es la actualización de la base de datos a SQL Server 2005, en realidad el recuento no válido existía antes de la actualización.

Permisos

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

Ejemplos

A. Actualizar recuentos de página o fila, 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 recuentos de página o fila, o ambos, para AdventureWorks y suprimir los mensajes informativos

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

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

C. Actualizar recuentos de página o fila, 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 AdventureWorks.

USE AdventureWorks;
GO
DBCC UPDATEUSAGE (AdventureWorks,"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 IX_Employee_ManagerID como nombre de índice.

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

Vea también

Referencia

DBCC (Transact-SQL)
sp_spaceused (Transact-SQL)
sys.sysindexes (Transact-SQL)
UPDATE STATISTICS (Transact-SQL)

Otros recursos

Arquitectura de tablas e índices
Cómo actualizar una base de datos mediante Separar y Adjuntar (Transact-SQL)

Ayuda e información

Obtener ayuda sobre SQL Server 2005