一些基本的SQL Profiler问题



(对不起,我的长期问题,我会尽量简洁。)

我正在运行SQL Server Profiler,并且正在追逐一些性能问题。我对Profiler的工作相对较新,并且将痕迹导出到表中,因此我可以针对数据运行查询。

我一直在竞争的一件事是,对跟踪导出生成的表的TextData字段进行选择的查询,看似奇怪的行为。它可能与该字段的数据类型(NTEXT,null)有关。我正在选择特定的值,但要获得意外的结果。例如,如果我这样做:

select * from [TraceAnalyzer].dbo.TraceTable

我对这样的价值观感兴趣:

exec [Sproc_of_interest] @parm1=992

我会做这样的查询:

select * from [TraceAnalyzer].dbo.TraceTable
where TextData like '%exec [Sproc_of_interest] @parm1=%'

但是返回结果为空。

另外,如果我进行查询:

select * from [TraceAnalyzer].dbo.TraceTable
where TextData like '%exec [Sproc_of_interest]%'

我获得了意外的TextData值,例如exec sp_reset_connection

标准中的方括号会弄乱事情吗?我尝试省略它们,但这只是不包括一切。我不知道SQL选择查询中的逃生字符,但是当我从一个有问题的记录中复制/粘贴值时,粘贴的值似乎不包含符合原始查询标准的任何内容。

任何见解都将不胜感激。谢谢。

[Sproc_of_interest]在模式语法中被解释为匹配一个 S,p,r,o,c,_,o,f,_,i,n,t,e,r,e,s,t中的一个字符。

解决此问题的三种可能的方法。

1)与方括号逃脱[

LIKE '%exec [[]Sproc_of_interest] @parm1=%'

2)使用逃生字符

LIKE 'exec [Sproc_of_interest] @parm1=' ESCAPE ''

3)使用CHARINDEX而不是逃脱任何东西

WHERE CHARINDEX('exec [Sproc_of_interest] @parm1=' , TextData) > 0

最新更新