debugsqlMinor
Trace to find "error messages"( SQL Server 2008 R2 )
Viewed 0 times
error2008sqlmessagesfindservertrace
Problem
I'm using this config, trying to find error when a certain host executes a task ( it runs inside a software ):
The user says that the software is running, but it's not updating what it needs to update.
So, I'm tracking their queries and procs, to find some errors.
Is this correct? If I use this:
It shows me an error ( that's what I want ).
Do you guys use something different? Is this a good way to find errors using trace? I use HOSTNAME with his machine.
Again, it's working. I just would like to know some other tips.
Thank you very much.
The user says that the software is running, but it's not updating what it needs to update.
So, I'm tracking their queries and procs, to find some errors.
Is this correct? If I use this:
select * from table whereIt shows me an error ( that's what I want ).
Do you guys use something different? Is this a good way to find errors using trace? I use HOSTNAME with his machine.
Again, it's working. I just would like to know some other tips.
Thank you very much.
Solution
Have you looked into SQL Server's Ring Buffer, especially the Exception Ring Buffer?
From SQL Server Ring Buffers and The Fellowship of the Ring by Sudarshan Narasimhan, I got the following query which works great for detecting uncaught exceptions and errors:
From SQL Server Ring Buffers and The Fellowship of the Ring by Sudarshan Narasimhan, I got the following query which works great for detecting uncaught exceptions and errors:
SELECT CONVERT (varchar(30), GETDATE(), 121) as [RunTime],
dateadd (ms, (rbf.[timestamp] - tme.ms_ticks), GETDATE()) as Time_Stamp,
cast(record as xml).value('(//Exception//Error)[1]', 'varchar(255)') as [Error],
cast(record as xml).value('(//Exception/Severity)[1]', 'varchar(255)') as [Severity],
cast(record as xml).value('(//Exception/State)[1]', 'varchar(255)') as [State],
msg.description,
cast(record as xml).value('(//Exception/UserDefined)[1]', 'int') AS [isUserDefinedError],
cast(record as xml).value('(//Record/@id)[1]', 'bigint') AS [Record Id],
cast(record as xml).value('(//Record/@type)[1]', 'varchar(30)') AS [Type],
cast(record as xml).value('(//Record/@time)[1]', 'bigint') AS [Record Time],
tme.ms_ticks as [Current Time]
from sys.dm_os_ring_buffers rbf
cross join sys.dm_os_sys_info tme
cross join sys.sysmessages msg
where rbf.ring_buffer_type = 'RING_BUFFER_EXCEPTION' --and cast(record as xml).value('(//SPID)[1]', 'int') <> 0--in (122,90,161,179)
and msg.error = cast(record as xml).value('(//Exception//Error)[1]', 'varchar(500)') and msg.msglangid = 1033 --and [Error] = 4002
ORDER BY rbf.timestamp ASCCode Snippets
SELECT CONVERT (varchar(30), GETDATE(), 121) as [RunTime],
dateadd (ms, (rbf.[timestamp] - tme.ms_ticks), GETDATE()) as Time_Stamp,
cast(record as xml).value('(//Exception//Error)[1]', 'varchar(255)') as [Error],
cast(record as xml).value('(//Exception/Severity)[1]', 'varchar(255)') as [Severity],
cast(record as xml).value('(//Exception/State)[1]', 'varchar(255)') as [State],
msg.description,
cast(record as xml).value('(//Exception/UserDefined)[1]', 'int') AS [isUserDefinedError],
cast(record as xml).value('(//Record/@id)[1]', 'bigint') AS [Record Id],
cast(record as xml).value('(//Record/@type)[1]', 'varchar(30)') AS [Type],
cast(record as xml).value('(//Record/@time)[1]', 'bigint') AS [Record Time],
tme.ms_ticks as [Current Time]
from sys.dm_os_ring_buffers rbf
cross join sys.dm_os_sys_info tme
cross join sys.sysmessages msg
where rbf.ring_buffer_type = 'RING_BUFFER_EXCEPTION' --and cast(record as xml).value('(//SPID)[1]', 'int') <> 0--in (122,90,161,179)
and msg.error = cast(record as xml).value('(//Exception//Error)[1]', 'varchar(500)') and msg.msglangid = 1033 --and [Error] = 4002
ORDER BY rbf.timestamp ASCContext
StackExchange Database Administrators Q#107505, answer score: 4
Revisions (0)
No revisions yet.