How to Prevent Sql Server Jobs to Run simultaneously
Asked Answered
G

1

9

I have some scheduled jobs in my SQL Agent:

  • Job1, executing every 2 minutes
  • Job2, executing every 10 minutes
  • Job3, executing every 15 minutes

As you can see, multiple jobs can run simultaneously. When these jobs do run simultaneously, it is causing the CPU usage to go to 100%.

Is there a solution? Is there a way to control the number of jobs running concurrently? Note: I need these jobs to run approximately in their appropriate period.

Generalize answered 19/10, 2010 at 12:54 Comment(2)
You could use Mutexes to prevent more than one job running at a time - what language are you using to send the SQL queries to the DB?Craftwork
these are jobs in sql server agent.Generalize
P
13

Use a session lock via sp_getapplock

You're asking for user-controlled concurrency and this is usually the best way.

This allows you to wait or abort if the lock is already held by another job. We use it in one or 2 places to stop multiple users forcing the same task to run overlapping. It works well.

Prince answered 19/10, 2010 at 12:59 Comment(2)
+1: Dam I wish I knew about this years ago. Previously, I had been rolling my own solution to this flavour of problem by using a status table to monitor the current state of a given process.Ci
@John Sansom: Glad to be of service... If you can use Transaction locks it is self-releasing too.Prince

© 2022 - 2025 — McMap. All rights reserved.