sys.dm_db_stats_properties (Transact-SQL)

Devuelve propiedades de estadísticas para el objeto de base de datos especificado (tabla o vista indizada) en la base de datos de SQL Server actual.

[!NOTA]

El objeto de administración dinámica, sys.dm_db_stats_properties, está disponible en SQL Server 2012 a partir de Service Pack 1 y en SQL Server 2008 R2 a partir de Service Pack 2.

Sintaxis

sys.dm_db_stats_properties (object_id, stats_id)

Argumentos

  • object_id
    Es el identificador del objeto en la base de datos actual para el que se han solicitado propiedades de una de sus estadísticas. object_id es de tipo int.

  • stats_id
    Es el identificador de estadísticas para el object_id especificado. El identificador de estadísticas se puede obtener desde la vista de administración dinámica sys.stats. stats_id es de tipo int.

Tabla devuelta

Nombre de columna

Tipo de datos

Descripción

object_id

int

Identificador del objeto (tabla o vista indizada) para el que se devuelven las propiedades del objeto de estadísticas.

stats_id

int

Identificador del objeto de estadísticas. Es único dentro de la vista indizada o la tabla. Para obtener más información, vea sys.stats (Transact-SQL).

last_updated

datetime2

Fecha y hora de la última actualización del objeto de estadísticas.

rows

bigint

Número total de filas que tenía la tabla o la vista indizada la última vez que se actualizaron las estadísticas. Si las estadísticas se filtran o corresponden a un índice filtrado, el número de filas puede ser inferior al número de filas de la tabla.

rows_sampled

bigint

Número total de filas muestreadas para cálculos de estadísticas.

steps

int

Número de pasos del histograma. Para obtener más información, vea DBCC SHOW_STATISTICS (Transact-SQL).

unfiltered_rows

bigint

Número total de filas de la tabla antes de aplicar la expresión de filtro (para estadísticas filtradas). Si las estadísticas no están filtradas, unfiltered_rows es igual al valor devuelto en la columna rows.

modification_counter

bigint

Número total de modificaciones para la columna de estadísticas iniciales (la columna en la que se ha generado el histograma) desde la última vez que se actualizaron las estadísticas.

Comentarios

sys.dm_db_stats_properties devuelve un conjunto de filas vacío en las siguientes condiciones:

  • object_id o stats_id es NULL.

  • El objeto especificado no se encuentra o no corresponde a una vista indizada o a una tabla.

  • El identificador de estadísticas especificado no se corresponde con las estadísticas existentes para el identificador de objeto especificado.

  • El usuario actual no tiene permisos para ver el objeto de estadísticas.

Este comportamiento permite el uso seguro de sys.dm_db_stats_properties cuando se aplica de manera cruzada a filas en vistas como sys.objects y sys.stats.

Permisos

Necesita que el usuario tenga permisos de selección en columnas de estadísticas o posea la tabla, o que el usuario sea miembro del rol fijo de servidor sysadmin, del rol fijo de base de datos db_owner o del rol fijo de base de datos db_ddladmin.

Ejemplos

A.Devolver propiedades de todas las estadísticas de una tabla

En el ejemplo siguiente se devuelven propiedades de todas las estadísticas que existen para la tabla TEST.

SELECT
    sp.stats_id, name, filter_definition, last_updated, rows, rows_sampled, steps, unfiltered_rows, modification_counter 
FROM sys.stats AS stat 
CROSS APPLY sys.dm_db_stats_properties(stat.object_id, stat.stats_id) AS sp
WHERE stat.object_id = object_id('TEST');

B.Devolver propiedades de estadísticas para objetos modificados frecuentemente

En el ejemplo siguiente se devuelven todas las tablas, vistas indizadas y estadísticas de la base de datos actual para las que la columna inicial se modificó más de 1000 veces desde la última actualización de estadísticas.

SELECT 
    obj.name, obj.object_id, stat.name, stat.stats_id, last_updated, modification_counter
FROM sys.objects AS obj 
JOIN sys.stats stat ON stat.object_id = obj.object_id
CROSS APPLY sys.dm_db_stats_properties(stat.object_id, stat.stats_id) AS sp
WHERE modification_counter > 1000;

Vea también

Referencia

DBCC SHOW_STATISTICS (Transact-SQL)

sys.stats (Transact-SQL)

Funciones y vistas de administración dinámica relacionadas con objetos (Transact-SQL)

Funciones y vistas de administración dinámica (Transact-SQL)