小编Jor*_*gal的帖子

在扩展事件过滤器上使用方括号

我想创建一个扩展事件会话,并使用like_i_sql_unicode_string运算符过滤短语[demo],并使用方括号。我从以下开始:

CREATE EVENT SESSION [demo] ON SERVER 
ADD EVENT sqlserver.sql_batch_completed(
    WHERE ([sqlserver].[like_i_sql_unicode_string]([sqlserver].[sql_text],N'%[demo]%'))
)
ADD TARGET package0.ring_buffer
alter event session [demo] on server state=start
Run Code Online (Sandbox Code Playgroud)

但这会解释[demo]为类似正则表达式的语法上的字符组。所以如果我运行这个:

-- m
Run Code Online (Sandbox Code Playgroud)

它将在扩展事件中捕获。

我得到的最接近的是稍后过滤它,使用[sqlserver].[like_i_sql_unicode_string]([sqlserver].[sql_text],N'%demo%')过滤器然后:

SELECT
n.ev.value('@timestamp','datetimeoffset') as [timestamp],
n.ev.value('data[@name="batch_text"][1]','varchar(max)')  as [batch_text]
FROM sys.dm_xe_session_targets xet
INNER JOIN sys.dm_xe_sessions xe ON xe.[address] = xet.event_session_address
cross apply (select CONVERT(XML, target_data) as xData ) as x
cross apply x.xData.nodes(N'RingBufferTarget/event') AS n(ev)
WHERE xe.name = N'demo' AND xet.target_name = N'ring_buffer'
and n.ev.value('data[@name="batch_text"][1]','varchar(max)') like …
Run Code Online (Sandbox Code Playgroud)

sql-server syntax extended-events operator like

5
推荐指数
1
解决办法
556
查看次数

标签 统计

extended-events ×1

like ×1

operator ×1

sql-server ×1

syntax ×1