Comments posted to this topic are about the item Get Error Description in SQL Server 2000
Yes I had a look. It is similar to mine. But I have not extracted any thing from it. If I had done so why would I post the article on same site.:)
I was unable to find sp_GetErrorDesc in the resouce section. Where should (url) I be looking? A search on the procedure name returned no hits.
-- Mark --
Its there in the Resources Section There's a link to download the file The File Name itself is the link Text
Search for this sp_GetErrorDesc.sql
The URL of the file is
The way I usually do things is to try to check return codes and handle the error at the procedure level...
I code all my stored procs to return specific codes for specific errors.
exec @ret = mydb.dbo.usp_procedure @arg1='foo'
if @ret = -1
RAISERROR('USP_PROCEDURE FAILED BECAUSE IT WAS TIRED', 16,1) WITH LOG
if @ret = -2
RAISERROR('USP_PROCEDURE FAILED FOR SOME OTHER REASON', 16,1) -- not specifying WITH LOG
What this accomplishes is that you keep your error severity level in the 'user mode' and allows you to be specific with your language when dealing with a specific stored procedure.... it also logs (or doesn't) depending on how you code it.... so for a less critical table, a 515 error might not be "log worthy" if you catch my meaning.
It also enables you to move your database to a different server without as much trouble.
Actually I had a need to get Exact Error Message and for Emailing. Since I had to give all functionality that a windows service would do.
Otherwise I would had sticked to Windows Service.
Mr or Mrs. 500
MS SQL 2000 already has system stored procedure in msdb that returns error description from messages table. The system stored procedure is named "sp_get_message_description"
I ran sp_get_message_description 515
and the O/P
Cannot insert the value NULL into column '%.*ls', table '%.*ls'; column does not allow nulls. %ls fails.
Can you tell me how to fill out the missing values???
Mr or Mrs. 500
Some error messages are template and need to raiseerror first, check for the error number and get error description, at that point, you will get the target objects (table name, column etc ..) replaced. This applies to some errors, but others you can get the full error message such as divide by zero etc ..
exec msdb..sp_get_message_description 8134
I had a requirement to get the Exact Error Messages generated by SQL Server 2000. If I was not able to achieve that then we would have switched to Windows Service.
Is it me or are you guys missing a trick here?
There is a system table named sysmessages where all error descriptions are stored (both system errors and user errors), with reference to the place holders you should know for the most part which table caused the error as you should really be checking for errors at every stage of a transaction. With regards to the column this is where my process falls short, you are not able able to capture it real time you would have to re-run the process to find the column that isn't happy.
Once I'm in the office tomorrow I will post the full code I use for all error captures for all my databases. This code allows you to trap the error, record the error message and the details of the process that caused the error and then issue an alert email to the DBA's or whoever you want to send the message to.
The error capture process will store the error details and process details in the database you are working with if for any reason it cannot record the error in the database it reverts to storing the data in the server log. I have to say I'm not a big fan of storing the error in the log as it is more difficult to extract in an automated manor than if it is stored in table where the error occurred or even in a central error capture database.
The sysmessage is there but since there are multiple insert stmts and multiple update stmts just looking at the placeholder is very difficult. Since in my case the support IT team required the exact error description so that they can sort the issue as soon as possible. since sys messages give only the template message. for eg Inserting Null value into a column which does not allow it. In our case each table has around 15 - 25 columns. So it would be very difficult to find out looking at the sysmessage that which table the issue has occurred and which value was Null.
I found both the article AND the subsequent discussion here very useful. Thank you to all!
Viewing 15 posts - 1 through 14 (of 14 total)