(对不起,我长长的问题,我会尽量做到简明扼要。)几个基本的SQL事件探查器问题
我运行SQL Server探查和我追逐了一些性能问题。我对探查器的功能相对比较陌生,并且我已将这些追踪数据导出到一个表格中,以便我可以针对这些数据运行查询。
我一直在面对的一件事是一些看似奇怪的行为,对由跟踪导出生成的表格的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]'被解释为在模式语法中匹配的一组值。因为无论如何你使用的是一个通配符,它可能更容易只是[使用'CHARINDEX'](http://stackoverflow.com/questions/258757/escape-a-string-in-sql-server-so-that-it -is-safe-to-use-like-expression/9242060#9242060)而不是转义所有特殊字符。 –
谢谢马丁。这似乎让我得到了我需要的东西。重新发布它作为答案,我给你接受的标志。 :-) – BobC