额。

解决方案 »

  1.   

    如果是直接输入查询语句,可在界面上选择执行计划,根据执行计划中的显示可知.
    或者可以通过Server Profiler对查询语句进行跟踪,在跟踪结果中可以看到内存使用情况.
      

  2.   

    有没有什么DMV之类的,可以即时查询当前数据库中消耗内存最大的查询。(别人的)
      

  3.   

    SELECT  creation_time          ,last_execution_time         ,total_physical_reads        ,total_logical_reads          ,total_logical_writes        , execution_count         , total_worker_time        , total_elapsed_time         , total_elapsed_time / execution_count avg_elapsed_time        ,SUBSTRING(st.text, (qs.statement_start_offset/2) + 1,         ((CASE statement_end_offset           WHEN -1 THEN DATALENGTH(st.text)          ELSE qs.statement_end_offset END             - qs.statement_start_offset)/2) + 1) AS statement_textFROM sys.dm_exec_query_stats AS qsCROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) stORDER BY total_elapsed_time / execution_count DESC;
      

  4.   

    楼上的方法,好像只能查询已经运行完毕的sql语句的开销。
    不知道有什么办法可以监控目前还在执行的sql消耗内存的情况。\(^o^)/~
      

  5.   

    好像profiler里也没有吧,我只看到cpu占用时间、磁盘读写次数,没看到内存使用量。
    谁详细介绍一下,学习了。 
      

  6.   

    1、执行计划
    2、sql profile
      

  7.   

    具体用了多少内存不知道怎么查因为sql语句的解析,algebraization,优化生成执行计划都是用到内存的,这部分内存怎么算?total_physical_reads  + total_logical_reads 这两个是读进缓冲区的。