This is the 2nd part of a 3 blog post series on troubleshooting SMA.
See here for Part 1
In this post, I’ll focus on troubleshooting job states and worker issues.
If you read Part 1, then you should be aware how SMA distributes the jobs to the available workers.
While this mechanism ensures fair sharing of runbook jobs it may also introduce some issues.
What’s the matter?
- Workers with assigned jobs can go down, or have other serious problems preventing them from executing jobs
- Jobs may hang in a queued or starting state because of an error described above
While there are runbooks, you don’t care to start them over and over again if they failed, others will be sensitive to states from connected interfaces like Service Manager. You really want to keep the invoked runbook and having it executed properly even if the assigned runbook worker has an issue. So how can you spot on runbooks being in a problem state?
To help me out with housekeeping and troubleshooting SMA, I’ve created a little Powershell Module (SMAHouseKeeping.psm1) to perform the following tasks:
- List Jobs and their assignment to workers (can be helpful to identify a worker with problems)
- Move Jobs from a worker to another worker (can be used to transfer queued or starting jobs to another worker)
Where to get the module
How to use the module
To use the module you need
- to unzip and unblock the downloaded files
- read/write access to the SMA DB
When importing the module you have to pass SQL Server and DB Name as Arguments for the module
**Importing the module
(prevent this module from autoloading)
Import-Module C:\Scripts\SMAHouseKeeping\SMAHouseKeeping.psm1 -ArgumentList SQLSERVER01,SMA
(where “SQLSERVER” is the SQL Host and “SMA” is the name of the SMA database)
Listing job to worker assignments
Get-SMAJobAssignment -JobState suspended Get-SMAJobAssignment -JobState queued Get-SMAJobAssignment -JobState starting Get-SMAJobAssignment -JobState stopped Get-SMAJobAssignment -JobState running Get-SMAJobAssignment -JobState completed
Moving queued jobs to another runbook worker
Move-SMAJobQueue -SourceWorker worker1 -TargetWorker worker2 -JobState queued
Canceling a stuck job
Set-SMAJobState -JobID 848ecc75-d5bc-4ef7-b6ac-9335b86a269b -JobState failed
THIS CODE IS MADE AVAILABLE AS IS, WITHOUT WARRANTY OF ANY KIND. THE ENTIRE RISK OF THE USE OR THE RESULTS FROM THE USE OF THIS CODE REMAINS WITH THE USER