[英]Querying dm_db_index_usage_stats returns empty row
我有一个用户告诉我,我们的应用程序中的某些数据已更改。
使用此示例 ,我在填充应用程序中数据的表上运行以下查询:
SELECT OBJECT_NAME(OBJECT_ID) AS TableName,
last_user_update,*
FROM sys.dm_db_index_usage_stats
WHERE database_id = DB_ID( 'Mydatabase')
AND OBJECT_ID=OBJECT_ID('mytable')
我没有返回任何行,因此似乎表中没有更新的数据历史记录?
我跑了
SELECT OBJECT_NAME(OBJECT_ID) AS TableName,
last_user_update,*
FROM sys.dm_db_index_usage_stats
WHERE database_id = DB_ID( 'Mydatabase')
我得到了13行,尽管其中有几行的TableName为null。
第一点:
每当启动SQL Server(MSSQLSERVER)服务时,计数器都将初始化为空。 此外,每当数据库分离或关闭时(例如,由于AUTO_CLOSE设置为ON),与数据库关联的所有行都将被删除。
因此,如果您的服务器重新启动或您没有统计信息。
第二点:
调用OBJECT_NAME
函数时,请使用database_id
参数:
SELECT OBJECT_NAME(OBJECT_ID, DB_ID( 'Mydatabase')) AS TableName,
last_user_update,*
FROM sys.dm_db_index_usage_stats
WHERE database_id = DB_ID( 'Mydatabase')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.