Просмотр ошибочных операторов SQL в MS SQL 2008 - PullRequest
0 голосов
/ 31 августа 2011

Можно ли просмотреть операторы SQL, которые не в состоянии правильно анализировать (например, неправильно сформированные динамически созданные запросы, которые не экранируют зарезервированные символы) или возникают проблемы с их выполнением (например, ошибки приведения) в SQL 2008 Profiler. Если да, то какие события мне следует искать?

1 Ответ

2 голосов
/ 01 сентября 2011

После дальнейших исследований, кажется, лучше использовать команды sp_trace, а не профилировщик из-за эффективности. Я создал трассировку, используя этот скрипт, чтобы найти неправильно сформированный SQL.

declare @trace_id INT  

exec sp_trace_create @traceid = @trace_id  OUTPUT,        
                @options =  2,       
                @tracefile =  N'c:\trace_xxx' -- change filename to one that makes better sense

select @trace_id AS trace_id

exec sp_trace_setevent @traceid = @trace_id
          , @eventid = 10
          , @columnid = 1
          , @on = 1

exec sp_trace_setevent @traceid = @trace_id
          , @eventid = 12
          , @columnid = 1
          , @on = 1

exec sp_trace_setevent @traceid = @trace_id
          , @eventid = 33
          , @columnid = 1
          , @on = 1

exec sp_trace_setevent @traceid = @trace_id
          , @eventid = 10
          , @columnid = 14
          , @on = 1

exec sp_trace_setevent @traceid = @trace_id
          , @eventid = 12
          , @columnid = 14
          , @on = 1

exec sp_trace_setevent @traceid = @trace_id
          , @eventid = 33
          , @columnid = 14
          , @on = 1

exec sp_trace_setevent @traceid = @trace_id
          , @eventid = 10
          , @columnid = 15
          , @on = 1

exec sp_trace_setevent @traceid = @trace_id
          , @eventid = 12
          , @columnid = 15
          , @on = 1

exec sp_trace_setevent @traceid = @trace_id
          , @eventid = 33
          , @columnid = 15
          , @on = 1


exec sp_trace_setfilter @traceid = @trace_id
          , @columnid = 31
          , @logical_operator = 0
          , @comparison_operator = 2
          , @value = 0

exec sp_trace_setfilter @traceid = @trace_id
          , @columnid = 1
          , @logical_operator = 0
          , @comparison_operator = 7
          , @value = N'exec sp_reset_connection'



exec sp_trace_setstatus @traceid =  @trace_id , @status = 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...