(Извините за длинный вопрос, я постараюсь быть кратким.)
Я использую 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
Могут ли квадратные скобки в критериях все испортить? Я пробовал их опустить, но это исключает все. Мне не известны escape-символы в запросах выбора SQL, но когда я копирую / вставляю значение из одной из проблемных записей, вставленное значение, похоже, не содержит ничего, что соответствовало бы критериям исходного запроса.
Приветствуются любые идеи. Спасибо.
[Sproc_of_interest]
интерпретируется как набор значений, соответствующих синтаксису шаблона. Поскольку вы в любом случае используете ведущий подстановочный знак, вероятно, проще просто использоватьCHARINDEX
вместо экранирования всех специальных символов. - person Martin Smith   schedule 02.11.2012