开发者

Viewing failed SQL statements in MS SQL 2008

Is it possible to view the SQL statements that fail开发者_C百科 to either parse correctly (such as badly formed dynamically created queries which don't escape reserved characters) or have problems in their execution (such as cast errors) in SQL 2008 Profiler. If so what events should I be looking for?


After further research it seems better to use the sp_trace commands rather than profiler due to efficiency. I have created a trace using this script to find the SQL that is badly formed.

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
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜