朋友有一個Rebuild Index的Job執(zhí)行一般停掉了,問我是否可以查看哪些Index已經(jīng)被Rebuild過了。本來以為Sys.index或者Sys.objects會存儲類似的信息,結(jié)果沒有找到。
從網(wǎng)上查了一下,SQL Server沒有存儲類似的信息。但是因?yàn)镽ebuild Index會自動更新統(tǒng)計(jì)信息,而統(tǒng)計(jì)信息的更新時間是可以獲得的。所以我們可以大致根據(jù)統(tǒng)計(jì)信息的時間來估計(jì)。
因?yàn)榻y(tǒng)計(jì)信息的更新也有可能是達(dá)到更新的閥值所做的更新,所以不是非常的準(zhǔn)確。
具體的腳本如下:
SELECT OBJECT_NAME(object_id) [TableName],
name [IndexName],
STATS_DATE(object_id, stats_id)[LastStatsUpdate]
FROM sys.stats
WHERE name NOT LIKE '_WA%'--
AND STATS_DATE(object_id, stats_id)IS NOT NULL
AND OBJECTPROPERTY(object_id,'IsMSShipped') = 0 --查詢用戶自定義的
ORDER BY TableName, IndexName
-----代碼來自于:http://stackoverflow.com/questions/2831293/tsql-know-when-index-rebuild-reorg-or-updatestatistics-was-last-run-on-sql-ser