--总计耗费CPU时间最长的查询计划
SELECT TOP 5 total_worker_time, last_worker_time, 
 max_worker_time, min_worker_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_text
FROM sys.dm_exec_query_stats as qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) as st
ORDER BY total_worker_time DESC执行结果如下:
服务器: 消息 170,级别 15,状态 1,行 12
第 12 行: 'APPLY' 附近有语法错误。

解决方案 »

  1.   

    CROSS APPLY?什么东西?没见过.
      

  2.   

    结果--
    total_worker_time    last_worker_time     max_worker_time      min_worker_time      statement_text
    -------------------- -------------------- -------------------- -------------------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    333987               333987               333987               333987               INSERT INTO A 
    SELECT 'A001','A21' UNION ALL     
    SELECT 'A002','A22' UNION ALL    
    SELECT 'A003','A23'                 
    311268               3084                 304618               3084                 SELECT
    CAST(COLLATIONPROPERTY(name, 'LCID') AS int) AS [LocaleID]
    FROM
    sys.fn_helpcollations() cl
    WHERE
    (cl.name=N'Chinese_PRC_CI_AS')
    294595               4066                 290530               4066                 SELECT AC.A2,BC.C2 FROM 
    (SELECT C.*,B.B2 FROM C INNER JOIN B ON B.B1=C.C1 ) BC
    left outer JOIN 
    (SELECT DISTINCT A.*,B.B2 FROM A INNER JOIN B ON A.A1=B.B1 ) AC
    ON BC.B2=AC.B2
    106718               106718               106718               106718               SELECT TOP 5 total_worker_time, last_worker_time, 
     max_worker_time, min_worker_time,
        SUBSTRING(st.text, (qs.statement_start_offset/2) + 1,
        ((CASE statement_end_offset 
            WHEN -1 THEN DATALENGTH(st.text)
            ELSE qs.statement_end_off
    62601                62601                62601                62601                SELECT se.is_admin_endpoint AS N'AdminConnection'
                FROM  sys.endpoints se 
                INNER JOIN sys.dm_exec_connections dmc ON dmc.endpoint_id = se.endpoint_id
                                                                            WHERE
     (5 行受影响)
      

  3.   

    先分别执行
    select * FROM sys.dm_exec_query_stats
    select * FROM sys.dm_exec_sql_text
    看看有没有系统表,如果有再查一下apply这个帮助,sql2005上解释
    --
    使用 APPLY 运算符可以为实现查询操作的外部表表达式返回的每个行调用表值函数。表值函数作为右输入,外部表表达式作为左输入。通过对右输入求值来获得左输入每一行的计算结果,生成的行被组合起来作为最终输出。APPLY 运算符生成的列的列表是左输入中的列集,后跟右输入返回的列的列表。 APPLY 有两种形式: CROSS APPLY 和 OUTER APPLY。CROSS APPLY 仅返回外部表中通过表值函数生成结果集的行。OUTER APPLY 既返回生成结果集的行,也返回不生成结果集的行,其中表值函数生成的列中的值为 NULL。
      

  4.   

    没有sys.dm_exec_query_stats
    也没有APPLY
      

  5.   

    select * FROM sys.dm_exec_query_stats
    ----
    sql_handle                                                                                                                         statement_start_offset statement_end_offset plan_generation_num  plan_handle                                                                                                                        creation_time           last_execution_time     execution_count      total_worker_time    last_worker_time     min_worker_time      max_worker_time      total_physical_reads last_physical_reads  min_physical_reads   max_physical_reads   total_logical_writes last_logical_writes  min_logical_writes   max_logical_writes   total_logical_reads  last_logical_reads   min_logical_reads    max_logical_reads    total_clr_time       last_clr_time        min_clr_time         max_clr_time         total_elapsed_time   last_elapsed_time    min_elapsed_time     max_elapsed_time
    ---------------------------------------------------------------------------------------------------------------------------------- ---------------------- -------------------- -------------------- ---------------------------------------------------------------------------------------------------------------------------------- ----------------------- ----------------------- -------------------- -------------------- -------------------- -------------------- -------------------- -------------------- -------------------- -------------------- -------------------- -------------------- -------------------- -------------------- -------------------- -------------------- -------------------- -------------------- -------------------- -------------------- -------------------- -------------------- -------------------- -------------------- -------------------- -------------------- --------------------
    0x03000A004A0CC672F8B8A100CF9800000000000000000000                                                                                 224                    386                  1                    0x05000A004A0CC672B861F904000000000000000000000000                                                                                 2007-02-08 09:49:08.043 2007-02-08 09:49:08.060 1                    318                  318                  318                  318                  0                    0                    0                    0                    0                    0                    0                    0                    3                    3                    3                    3                    0                    0                    0                    0                    319                  319                  319                  319