SQL语句中出现错误
在SQLServer2008上运行时,出现以下错误 Msg 102,15级,状态1,第31行 附近的语法不正确 我正在试着运行一个 在阻止查询代理下SQL语句中出现错误,sql,sql-server,Sql,Sql Server,在SQLServer2008上运行时,出现以下错误 Msg 102,15级,状态1,第31行 附近的语法不正确 我正在试着运行一个 在阻止查询代理下 任何提示都将不胜感激。您需要with子句后面的内容,通常是a;在它之前 with [BlockedQueries] as ( select der.session_id, der.blocking_session_id, der.start_time, der.total_elapsed_time,
任何提示都将不胜感激。您需要with子句后面的内容,通常是a;在它之前
with [BlockedQueries] as
(
select
der.session_id, der.blocking_session_id, der.start_time,
der.total_elapsed_time,
SUBSTRING(text, (statement_start_offset/2)+1,
((CASE statement_end_offset
WHEN -1 THEN DATALENGTH(text)
ELSE statement_end_offset
END - statement_start_offset)/2) + 1) AS sqltext
from
sys.dm_exec_requests as der
cross apply
sys.dm_exec_sql_text (der.sql_handle) as dest
where
blocking_session_id <> 0
union all
select
c.session_id, c.blocking_session_id, c.start_time, c.total_elapsed_time,
dest.text
from
[BlockedQueries] p, sys.dm_exec_requests as c
cross apply
sys.dm_exec_sql_text (c.sql_handle) as dest
where
p.[blocking_session_id] = c.[session_id]
)
在with子句之后需要一些东西,通常是a;在它之前
with [BlockedQueries] as
(
select
der.session_id, der.blocking_session_id, der.start_time,
der.total_elapsed_time,
SUBSTRING(text, (statement_start_offset/2)+1,
((CASE statement_end_offset
WHEN -1 THEN DATALENGTH(text)
ELSE statement_end_offset
END - statement_start_offset)/2) + 1) AS sqltext
from
sys.dm_exec_requests as der
cross apply
sys.dm_exec_sql_text (der.sql_handle) as dest
where
blocking_session_id <> 0
union all
select
c.session_id, c.blocking_session_id, c.start_time, c.total_elapsed_time,
dest.text
from
[BlockedQueries] p, sys.dm_exec_requests as c
cross apply
sys.dm_exec_sql_text (c.sql_handle) as dest
where
p.[blocking_session_id] = c.[session_id]
)
通过从Common Table ExpressionCTE中选择,将查询更改为此查询
通过从Common Table ExpressionCTE中选择,将查询更改为此查询
为什么联合中的第二个select尝试从它所属的CTE返回行?@RowlandShaw-这是递归CTE的语法。这个查询可能会遍历阻塞查询链。还没有仔细研究过。为什么联合体中的第二个select尝试从它所属的CTE返回行?@RowlandShaw-这是递归CTE的语法。这个查询可能会遍历阻塞查询链。我没仔细看过。
with [BlockedQueries] as (
select der.session_id, der.blocking_session_id, der.start_time, der.total_elapsed_time,
SUBSTRING(text, (statement_start_offset/2)+1,
((CASE statement_end_offset
WHEN -1 THEN DATALENGTH(text)
ELSE statement_end_offset
END - statement_start_offset)/2) + 1) AS sqltext
from sys.dm_exec_requests as der
cross apply sys.dm_exec_sql_text (der.sql_handle) as dest
where blocking_session_id <> 0
union all
select c.session_id, c.blocking_session_id, c.start_time, c.total_elapsed_time, dest.text from
[BlockedQueries] p, sys.dm_exec_requests as c
cross apply sys.dm_exec_sql_text (c.sql_handle) as dest
where p.[blocking_session_id] = c.[session_id]
)
SELECT * FROM [BlockedQueries];