我有一个用户告诉我我们的应用程序中的某些数据已更改。
使用this example,在填充应用程序中数据的表上运行以下查询:
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为空。
答案 0 :(得分:1)
第一点:
每当SQL Server计数器被初始化为空 (MSSQLSERVER)服务已启动。此外,只要数据库是 分离或关闭(例如,因为AUTO_CLOSE设置为 ON),与数据库关联的所有行都将被删除。
因此,如果您的服务器重新启动或您没有统计信息。
第二点:
在调用database_id
函数时使用OBJECT_NAME
参数
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')