TFS2010: Warehouse and Job Service Administrator Reports

Grant Holliday’s blog

Senior Service Engineer, Microsoft Visual Studio Team Foundation Service

TFS2010: Warehouse and Job Service Administrator Reports

  • Comments 11

The new TFS Administration Console will show you very basic information about warehouse & cube processing. However, it doesn’t show you anything about the queued & executing jobs.  These are both gaps that I hope we address in the shipping product in the future. In the meantime for any real warehouse or job status information you have to hit the web services. Since the web services don’t allow you to invoke them using a web browser from a remote computer, you’re forced to logon locally to the server and run them from there.

The smarter option is to download yourself a copy of WebServiceStudio, which allows you to invoke web methods with complex parameters from your remote workstation. No more logging onto servers!

Here are the WSDL EndPoint’s that you’ll need. Copy them in, change the server name, select ‘Get’, select a method from the tree, select ‘Invoke’, (ignore the exception dialog if you get one the first time), select ‘Invoke’ again and there you have it.

  image

Now, the problem with either reading the XML from the web browser (argh! my eyes!), or using WebServiceStudio is that there’s lots of nested information which makes it difficult to find out what’s going on. Fortunately with a fairly simple report and the XML Data Source that SQL Reporting Services provides, we can make it much, much nicer.

Introducing the first two TFS2010 Administration Reports

As I run the Pioneer dogfood TFS server day-to-day, I notice opportunities for tools to help make TFS administrator’s lives easier. Here’s the first two reports to give you a better insight as to what is happening on your server and allow you to investigate problems without having to mess around with web services.

Download & Setup

  • Open a browser an browse to your SQL Reporting Services root site. For example: http://tfsserver/Reports/
  • Create a new folder and name it ‘Status’
  • Create two new shared data sources with the following properties:
  • Download the ZIP attachment from the bottom of this post
  • Extract the contents to a temporary folder on your workstation
  • Select ‘Upload File’ from the reporting services manager
  • Browse to the temporary folder where you extracted the reports, select ‘OK’.
  • Repeat for the other report
  • Try it out!
  • Get somebody else to try it out and make sure permissions are set correctly.

Warehouse Status Report

The first part of the report shows you the overall status, similar to the ‘Reporting’ tab in the Team Foundation Administration Console. This is a quick an easy way to find out if an Incremental or Full processing is in progress.  It will also show you any errors (like warehouse schema conflicts) in the ‘Last Run’ column.

Warehouse Status Report - Processing status

The second part of this report is useful after an upgrade or when the warehouse needs to be rebuilt manually.  It shows you each of the data adapter sync jobs for each collection and their current status. During normal operation, these will run very quickly as data changes in the operational stores, so you’ll probably always see them as “Idle”. It will also show you any errors from previous job executions in the ‘Last Run’ column.

Warehouse Status Report - Data Adapter Jobs

Job Status Report

The first part of this report shows you the job definitions for the instance and the interval they’re set to run on. This is useful for checking to see if a job has somehow been disabled or changed.

Job Status Report - Job Definitions

The second part of this report shows you the job history. Let me explain each of the fields:

  • Job ID – Every job in the system has a unique id.
  • Job Agent ID – Every AT/Job Agent has a unique id.  This field is useful if you have multiple application tiers and you want to know which one the job executed on so that you can investigate the event log or performance counters.
  • Result – This is an integer that represents the result of the job. 0 = Succeeded, 1 = PartiallySucceeded, 2 = Failed, 3 = Stopped, 4 = Killed, 5 = Blocked, 6 = ExtensionNotFound, 7 = Inactive, 8 = Disabled
  • Queued Reason – This is an integer that represents the way a job was scheduled. 0 = No reason to execute the job, 1 = Job has a schedule, 2 = Queued manually, 4 = Queued manually while already in progress, 8 = Queued due to previous result (Blocked, Inactive)
  • Start Time – The local time that the job started executing on a job agent
  • End Time – The local time that the job finished executing on a job agent
  • Duration – The number of minutes that the job was executing for
  • Result Message – Jobs are able to log a status message when they finish executing. Most jobs don’t,  since they execute very often and there’s no need to log anything if the job succeeded.

Job Status Report - Job History

There’s a few little visual styles that I added to allow you to glance the report and find problems:

  • Hover over a job result message to see the full text
  • Job results that failed have their error printed in red
  • Jobs that took longer than 30 minutes have their duration in red
  • Jobs that took longer than 10 minutes have their duration in orange

 

Filters

There is a lot of noise when dealing with jobs, so I added some parameters to help you filter out the noise.

image

  • Unscheduled jobs - are jobs that have a definition, but no schedule set. Examples: “Create Team Project Collection”, “Delete Team Project Collection”, “Service Team Project Collection”, “Provision Attach Team Project collection” and “Team Foundation Server On Demand Identity Synchronization”.
  • Successful jobs - are jobs that have a job result of ‘0’

If you find these useful, leave me a comment or drop me an email. I’d love suggestions for them or for any new TFS2010 Administrator reports.

Attachment: TFS2010AdministratorReports.zip
  • Grant,

    Any changes if the SSRS is running on the DT?

    Greg

  • @Greg - nope.  The data source points to the AT regardless of where the report is running from.

  • The link to the zip file gives a 404 error.  Can you fix it or send the file directly to me?

  • @Tim - the correct attachment is at the bottom of the post: blogs.msdn.com/.../TFS2010AdministratorReports.zip

  • Great Thanks!  I'm not clear why all my jobs have a scheduled time that are weeks or even years in the past (similar to what is in your image above).  Can you provide some extra details regarding this?

  • @Tim - that is normal.  Given that the jobs run every day, the "Scheduled Time" is not relevant.

  • Grant, when I look at my Warehouse Status report I notice two things and I wonder if you can help me out?

    1. The status of my Job Processing Status is always the same

       Job Processing Status: DataChange IncrementalAnalysisProcessing

    2. One of the Jobs never becomes Idle

    Name Jobs Running Jobs Queued Job Status Job Name Last Run

    DefaultCollection 1 0 DataChange    

         Idle Build Warehouse Sync  

         Idle Common Structures Warehouse Sync  

         DataChange Test Management Warehouse Sync  

         Idle Version Control Warehouse Sync  

         Idle Work Item Tracking Warehouse Sync

    Can you tell me what this status report is saying about my warehouse? Some background about the server:

    - Windows 2003 server SP2

    - TFS2010 (2005 upgraded to 2008 upgraded to 2010)

    - SQL2008 SP1 (2005 upgraded to 2008)

    - WSS3.0 SP2

  • @Anonymous - it's telling you that something is broken. Most likely you have hit a bug in the warehouse adapter. You're going to need to contact Microsoft Support to have them take a look at your db.

    You can try rebuilding the warehouse from the admin console, but I think you'll end up in a similar spot.

  • I got this error when I create the TfsJobServiceDS and press "Test Connection" button.   Any ideas?

    "Keyword not supported: 'http://devlftfsweb01:8080/tfs/teamfoundation/administration/v3.0/jobservice.asmx;integrated security'."

  • Is there any chance this will be productized into TFS 2012?

  • Thank you Grant! This is exactly what we need to do to solve some weird behaviour at a customer.

Page 1 of 1 (11 items)