日期:2014-05-17  浏览次数:20505 次

如何查看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