gpt4 book ai didi

sql-server - CROSS APPLY 中的语法错误

转载 作者:行者123 更新时间:2023-12-02 08:21:58 27 4
gpt4 key购买 nike

我正在尝试运行一个简单的查询来查找平均 CPU 时间最高的查询。该代码实际上是从 here 复制粘贴的:

SELECT TOP 5 total_worker_time/execution_count AS [Avg CPU Time],
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 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/execution_count DESC;

问题是,SQL Server 提示 sys.dm_exec_sql_text 参数第 8 行存在语法错误:qs.sql_handle 读取无益

Incorrect syntax near '.'.

我一生都无法弄清楚查询出了什么问题。有什么想法吗?

最佳答案

这意味着你要么是

  1. 未运行 SQL Server 2005;或者更有可能
  2. 未在兼容模式 90 或更高版本下运行

您可以使用将其更改为 90 或更高,但它很可能会破坏许多应用程序。

alter database MyDataBaseName set compatibility_level = 90

SQL Server 2005 及更高版本上最简单的解决方案就是从“master”或“tempdb”运行它,例如

USE tempdb;
SELECT TOP 5 total_worker_time/execution_count AS [Avg CPU Time],
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 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/execution_count DESC;

关于sql-server - CROSS APPLY 中的语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13922540/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com