dm_exec_query_stats是MS SQL Server2005新提供的系统函数,初次使用发现功能非常全面。可以提供一些特殊的解决问题的思路。
1 SELECT qs.execution_count,
2 SUBSTRING(qt.text,qs.statement_start_offset/2 +1,
3 (CASE WHEN qs.statement_end_offset = -1
4 THEN LEN(CONVERT(nvarchar(max), qt.text)) * 2
5 ELSE qs.statement_end_offset end -
6 qs.statement_start_offset
7 )/2
8 ) AS query_text,
9 qt.dbid, dbname= DB_NAME (qt.dbid), qt.objectid,
10 qs.total_rows, qs.last_rows, qs.min_rows, qs.max_rows
11 FROM sys.dm_exec_query_stats AS qs
12 CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS qt
13 WHERE qt.text like '%SELECT%'
14 ORDER BY qs.execution_count DESC
1 如果目标数据库查询有问题,可以尝试切换成master DB
2 sql_handle的类型为 varbinary(64) ,在CLR里被转换成byte[]。可以使用 sys.fn_varbintohexstr(sql_handle)进行序列化。
3 dbcc freeProcCache 用来清除缓存