2012-07-06 114 views
0

我使用下面的查询,以检查它的SQL Server 2008上,我得到的错误是SQL Server 2008的查询抛出错误

消息102,级别15,状态1,第13行附近有语法错误。 ”。

查询:

SELECT total_worker_time/execution_count AS AvgCPU 
, total_worker_time AS TotalCPU 
, total_elapsed_time/execution_count AS AvgDuration 
, total_elapsed_time AS TotalDuration 
, (total_logical_reads+total_physical_reads)/execution_count AS AvgReads 
, (total_logical_reads+total_physical_reads) AS TotalReads 
, execution_count 
, SUBSTRING 
    (
     st.TEXT, (qs.statement_start_offset/2)+1, 
     (
     (
      CASE qs.statement_end_offset 
      WHEN -1 THEN datalength(st.TEXT) 
      ELSE qs.statement_end_offset 
      END - qs.statement_start_offset 
     )/2 
     ) + 1 
    ) AS txt 
, query_plan 
FROM sys.dm_exec_query_stats AS qs 
cross apply sys.dm_exec_sql_text(qs.sql_handle) AS st 
cross apply sys.dm_exec_query_plan (qs.plan_handle) AS qp 
ORDER BY 1 DESC 

行号13是

FROM sys.dm_exec_query_stats AS qs 

不知道是什么的问题是

我的SQL Server版本:

Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (X64) 
Standard Edition (64-bit) on Windows NT 6.1 <X64> (Build 7600) 
+0

对我来说工作得非常好...... – Chandu 2012-07-06 13:48:28

+0

对我的SQL 2008 R2开发人员安装工作正常 – DaveShaw 2012-07-06 13:50:00

+0

对我来说也适用。 – 2012-07-06 13:51:09

回答

3

您的数据库处于2000兼容模式。一旦你这样做,你的查询将工作:

ALTER DATABASE YourDatabase SET COMPATIBILITY_LEVEL = 100; 

注意,它可能会在80模式的一个原因,但通常这仅仅是一个升级或迁移过程中一个被遗忘的一步。

+0

伟大的工作:) – user580950 2012-07-06 13:58:50