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
精彩评论