[英]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.