一些基本的Sql Profiler问题

时间:2012-11-02 16:01:38

标签: sql-server-2008 sqlprofiler

(对不起,我会尽量简明扼要。)

我正在运行SQL Server 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 select查询中的转义字符,但是当我从其中一个违规记录中复制/粘贴该值时,粘贴的值似乎不包含任何符合原始查询条件的值。

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

1 个答案:

答案 0 :(得分:1)

模式语法中的

[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