如何查看sql server中执行过的sql占内存排序,重点是关联上执行用户是谁
数据库是sql2005
现在想监控数据库的状态,需要查看数据库的一些内容
1.执行过得sql占内存状态
目前知道的方法是:
SELECT TOP 50
total_worker_time/execution_count AS [Avg CPU Time],
(SELECT SUBSTRING(text,statement_start_offset/2,
(CASE WHEN statement_end_offset = -1
then LEN(CONVERT(nvarchar(max), text)) * 2
ELSE statement_end_offset end
-statement_start_offset)/2)
FROM sys.dm_exec_sql_text(sql_handle)) AS query_text ,*
FROM sys.dm_exec_query_stats
ORDER BY [Avg CPU Time] DESC
这个没什么问题,但是少了一点信息,想知道是那个用户执行的,
这个是我的问题重点,请指点
2.目前数据库的文件大小信息
我用sys.database_files来看,如果有更好的更全的代码,请留下,谢谢
没办法,只让我发100分
[解决办法]
先回复你第二个问题:
http://www.mssqltips.com/sqlservertip/1037/system-information-in-sql-server-2000-vs-sql-server-2005/
[解决办法]
http://blog.csdn.net/tanleittl/article/details/7934234
有木有耐心看完这篇
[解决办法]
上面的语句是查询CPU使用情况的吧,不是内存。 而且个人觉得sys.dm_exec_query_stats 是不能和sys.sysprocesses 相关联的,因为两个VIEW中数据范围是不一样的。
sys.sysprocesses:Contains information about processes that are running on an instance of
sys.dm_exec_query_stats:Returns aggregate performance statistics for cached query plans . The view contains one row per query statement within the cached plan, and the lifetime of the rows are tied to the plan itself