2014-10-09 47 views
0

在SQL SERVER 2008 R2中,我有7個數據庫,每個數據庫大約有1000個表。獲取數據庫中所有表的最後一次用戶更新時間

我需要知道用戶最近更新了哪些表。隨着一些研究,我得到這個代碼:

SELECT OBJECT_NAME(OBJECT_ID) AS TableName, 
            last_user_update, 
            user_updates, 
            index_id 
FROM sys.dm_db_index_usage_stats 
WHERE database_id = DB_ID('SP3D_DB_RESEARCH_MDB') AND 
        OBJECT_ID = OBJECT_ID('CORECone3d') 
GO 

這將返回結果只有一個,因爲它要求一個特定的表/數據庫的最後一個用戶的更新。

有沒有什麼辦法把它放在某種循環中,以便遍歷數據庫中的所有表,並且我可以得到最後修改的表?

它不一定是查詢結果,它可能是一個簡單的文本輸出。

我不知道這個問題,但我使用的是MS SQL SERVER MANAGEMENT STUDIO。

  • 更新 -

基於普拉迪普答案,我得到下面的結果,與表名NULL

query results based on answer

+0

你就不能刪除'AND OBJECT_ID = OBJECT_ID('CORECone3​​d')'? – jpw 2014-10-10 01:36:23

+0

如果我這樣做,那麼它有點像我需要顯示的結果,但TableName列上的所有值都是NULL然後 – RBasniak 2014-10-10 02:24:29

+0

閱讀本文中的'備註'部分,它應該解決您的null問題:http://msdn.microsoft .com/en-us/library/ms186301.aspx – jpw 2014-10-10 02:31:37

回答

2

試試這個:

SELECT OBJECT_NAME(OBJECT_ID) AS TableName, 
           last_user_update, 
           user_updates, 
           index_id 
FROM sys.dm_db_index_usage_stats 
WHERE database_id = DB_ID('SP3D_DB_RESEARCH_MDB') 
+0

只要你知道,不要發佈一個新的答案,你可以編輯和取消刪除舊的。 – jpw 2014-10-10 01:38:46

+0

這樣它顯示所有表上的所有最後用戶更新,但我無法知道每個表的哪個條目,因爲TableNAme上的所有值都是NULL這種方式 – RBasniak 2014-10-10 02:25:59

+0

無法將表名作爲NULL。 Last_user_update可以是NULL! – 2014-10-10 05:05:59

相關問題