
拓狼
-
个人空间
- 组别:管理员
- 性别:
- 来自:北京 海淀
- 积分:1112
- 帖子:615
- 注册:
2007-05-23
|
如何知道数据库、表的最后访问时间
如何知道数据库、表的最后访问时间--王成辉整理,转帖请注明出自 www.windbi.com微软BI开拓者 -- 原帖地址SQL2008的方法: 原理;使用服务器审计功能。具体代码如下: USE master;GOCREATE SERVER AUDIT Test_Server_Audit TO FILE ( FILEPATH = 'C:\Audits\' );GOALTER SERVER AUDIT Test_Server_Audit WITH (STATE = ON);GOUSE AdventureWorks;GOCREATE DATABASE AUDIT SPECIFICATION Test_Database_Audit FOR SERVER AUDIT Test_Server_Audit ADD (SELECT ON Person.Address BY dbo) WITH (STATE = ON);GOSELECT * FROM Person.Address;GOSELECT * FROM fn_get_audit_file('C:\Audits\*', NULL, NULL);GOUSE AdventureWorks;GOALTER DATABASE AUDIT SPECIFICATION Test_Database_Audit WITH (STATE = OFF);GODROP DATABASE AUDIT SPECIFICATION Test_Database_Audit;GOUSE master;GOALTER SERVER AUDIT Test_Server_Audit WITH (STATE = OFF);GODROP SERVER AUDIT Test_Server_Audit;GOSQL2005的方法 原理:查询DMV sys.dm_db_index_usage_stats。具体代码如下: 查询数据库的最后访问时间: USE AdventureWorks;GOSET ANSI_WARNINGS OFF;SET NOCOUNT ON;GOWITH agg AS( SELECT last_user_seek, last_user_scan, last_user_lookup, last_user_update FROM sys.dm_db_index_usage_stats WHERE database_id = DB_ID())SELECT last_read = MAX(last_read), last_write = MAX(last_write)FROM( SELECT last_user_seek, NULL FROM agg UNION ALL SELECT last_user_scan, NULL FROM agg UNION ALL SELECT last_user_lookup, NULL FROM agg UNION ALL SELECT NULL, last_user_update FROM agg) AS x (last_read, last_write);查询每个表的最后访问时间: USE AdventureWorks;GOSET ANSI_WARNINGS OFF;SET NOCOUNT ON;GOWITH agg AS( SELECT [object_id], last_user_seek, last_user_scan, last_user_lookup, last_user_update FROM sys.dm_db_index_usage_stats WHERE database_id = DB_ID())SELECT [Schema] = OBJECT_SCHEMA_NAME([object_id]), [Table_Or_View] = OBJECT_NAME([object_id]), last_read = MAX(last_read), last_write = MAX(last_write)FROM( SELECT [object_id], last_user_seek, NULL FROM agg UNION ALL SELECT [object_id], last_user_scan, NULL FROM agg UNION ALL SELECT [object_id], last_user_lookup, NULL FROM agg UNION ALL SELECT [object_id], NULL, last_user_update FROM agg) AS x ([object_id], last_read, last_write)GROUP BY OBJECT_SCHEMA_NAME([object_id]), OBJECT_NAME([object_id])ORDER BY 1,2;查询特定表的最后访问时间: USE AdventureWorks;GOUPDATE Person.Address SET City = City + '';GOSELECT * FROM sys.dm_db_index_usage_stats WHERE database_id = DB_ID() AND index_id = 1 AND [object_id] = OBJECT_ID('Person.Address');GO
 拓狼 最后编辑于 2009-03-27 08:51:33
虽有智慧,不如乘势;虽有鎡基,不如待时。 君子学以聚之,问以辨之,宽以居之,仁以行之。 独学而无友,则孤陋而寡闻。
|