Learn more about SQL Server tools



solving sql server problems for millions of dbas and developers since 2006
join MSSQLTips for free SQL Server tips







Learn more about SQL Server tools








Learn more about SQL Server tools


How to store longer SQL Agent Job Step output messages

MSSQLTips author Greg Robidoux By:   |   Read Comments (2)   |   Related Tips: More > SQL Server Agent

Problem
When working with SQL Agent jobs sometimes it is difficult to determine why a job failed or even exactly what occurred.  For each job step SQL Server provides a message, but it is not always that easy to determine exactly what was occurring during that step.  The default message that is saved in the job history is 1024 characters.  In most cases this may be enough, but if you have a long running process you may need to store more than 1024 characters. Is there any way to get additional information within the job history to help troubleshoot issues as well as just knowing what occurred?

Solution
In SQL Server 2005 you have the ability to log additional SQL Agent job output beyond the 1024 characters that is stored in the msdb.dbo.sysjobhistory table.  By default this enhanced logging is not turned on it is something that you need to turn on for each job step.

Let's take for example we are running DBCC CHECKDB commands for several databases.  This command provides a lot of output data unless you use the WITH NO_INFOMSGS option.  If you are not using the NO_INFOMSGS option the command output fills up the 1024 characters quite quickly and you can only see the part of the output in the job history message.

Here is a screen shot of the job history for the step that did a DBCC CHECKDB.  As you can see we only get a portion of the command output.

To allow additional data to be logged you need to turn on some settings for each job step in your job.  To do this edit the job step and select the Advanced tab.

On this screen you need to enable both the "Log to table" and "Include step output in history".

After we make these changes and run this again if we look at the job history you will see the same short message.

In order to see the additional logged information you need to use this stored procedure sp_help_jobsteplog or you could query the msdb.dbo.sysjobstepslog table directly.

If we run this command in a query window (test2 is the job name)

EXEC dbo.sp_help_jobsteplog
@job_name = N'test2' ;
GO

we will get this additional output:  (note: the output was edited to remove most of the middle to keep this web page smaller)

Job 'test2' : Step 1, 'DBCC' : Began Executing 2007-12-13 21:06:14 DBCC results for 'Test1'. [SQLSTATE 01000] Service Broker Msg 9675, State 1: Message Types analyzed: 14. [SQLSTATE 01000] Service Broker Msg 9676, State 1: Service Contracts analyzed: 6. [SQLSTATE 01000] Service Broker Msg 9667, State 1: Services analyzed: 3. [SQLSTATE 01000] Service Broker Msg 9668, State 1: Service Queues analyzed: 3. [SQLSTATE 01000] Service Broker Msg 9669, State 1: Conversation Endpoints analyzed: 0. [SQLSTATE 01000] Service Broker Msg 9674, State 1: Conversation Groups analyzed: 0. [SQLSTATE 01000] Service Broker Msg 9670, State 1: Remote Service
...
sys.queue_messages_2041058307'. [SQLSTATE 01000] There are 0 rows in 0 pages for object "sys.queue_messages_2041058307". [SQLSTATE 01000] DBCC results for 'Table1'. [SQLSTATE 01000] There are 62 rows in 1 pages for object "Table1". [SQLSTATE 01000] DBCC results for 'sysarticles'. [SQLSTATE 01000] There are 2 rows in 1 pages for object "sysarticles". [SQLSTATE 01000] DBCC results for 'sysarticlecolumns'. [SQLSTATE 01000] There are 4 rows in 1 pages for object "sysarticlecolumns". [SQLSTATE 01000] CHECKDB found 0 allocation errors and 0 consistency errors in database 'Test1'. [SQLSTATE 01000] DBCC execution completed. If DBCC printed error messages, contact your system administrator. [SQLSTATE 01000]

As you can see we can now get the entire output message since the output in the sysjobstepslog  is stored as a nvarchar(max) instead of an nvarchar(1024) like in sysjobhistory.

Next Steps

  • Helpfully this tip is useful for you to get additional job step history, just a couple of clicks can provide a lot more detail
  • Keep in mind that only one row is stored per job step.  If you use the "Append output to existing entry in table" this will just append the data to the existing record.
  • Take a look at these other useful SQL Agent tips

 



Last Update: 12/14/2007


About the author
MSSQLTips author Greg Robidoux
Greg Robidoux is the President of Edgewood Solutions and a co-founder of MSSQLTips.com.

View all my tips
Related Resources


print tip Print  
Become a paid author




Recommended For You








Learn more about SQL Server tools
Comments and Feedback:
Friday, December 14, 2007 - 11:34:33 AM - timmer26 Read The Tip

Another alternative in both 2000 and 2005 is to create an output file for the script.  If you have multiple steps for the job you can also have them all post to the same output file (I locate mine in the LOG folder created in the SQL install).  You do this by using the same file name for each step, and selecting the Append output to existing file checkbox on the Job Step Properties / Advanced GUI form for each step after the first step.  (Therefore the first step overwrites the file, the subsequent steps append.)


Friday, January 18, 2008 - 2:28:21 PM - admin Read The Tip

Everyone,

Please check out this tip as a follow-up to this forum post:

Verbose SQL Agent Logging - http://www.mssqltips.com/tip.asp?tip=1411

Thank you,
The MSSQLTips.com Team



Post a Comment or Question

Keep it clean and stay on the subject or we may delete your comment.
Your email address is not published. Required fields are marked with an asterisk (*)

*Name   *Email Notify for updates

Signup for our newsletter


Comments
*Enter Code refresh code


 

Sponsor Information







Copyright (c) 2006-2014 Edgewood Solutions, LLC All rights reserved
privacy | disclaimer | copyright | advertise | about
authors | contribute | feedback | giveaways | user groups | community | events | first timer?
Some names and products listed are the registered trademarks of their respective owners.