benchdogJoin the launch list
ToolsSQL Scheduler
SQL Server and Azure SQLNew

Benchdog SQL Scheduler

SQL Agent for every edition, including the ones that never had one.

VS Code, desktop and command line. Windows, Mac and Linux. One licence covers all three.

Back up databases, run scripts and run the other Benchdog tools on a schedule, on SQL Server, SQL Server Express, Azure SQL Database and Managed Instance, with every run kept and an alert when a job fails. It does what the big job schedulers do for a fraction of their price, and runs as one service beside SQL Monitor's collector.

Every job at a glance

Make a project of the servers and the jobs to run on them, and see every job as a card: green when its last run succeeded, amber when it was skipped, red when it failed or timed out, with its schedule in plain words, when it is next due, and how its last run went. The latest runs sit beside the cards, the newest first, and a card or a run opens its job.

Your jobs, and what ran last.

Schedules in plain words

A job runs every day, every week on the days you pick, every month on a day or the last day, or every so many minutes or hours between the hours you say, at the times you give. Each is shown in words, such as Every day at 02:00 or Every 15 minutes from 08:00 to 18:00 on weekdays, with the next few runs. Those who know cron can write cron, and see it in words too.

Every day at 02:00, and the next three times it means.

Backups, scripts and the other Benchdog tools as steps

A step backs a database up, full, differential or log, to a folder on the server or an Azure Storage URL, compressed and checksummed if you like, and clears backups older than the days you keep. A step runs T-SQL, typed in or from a .sql file beside the project, split on GO. A step runs another Benchdog project file: a Multi Runner list and script, a Schema Compare deploy, a Data Comparer sync, a Data Scrambler scramble, a Data Filler fill or a SQL Documenter build. One job can do all three.

Back up, run a script, scramble the copy. One job.

Steps that carry on, retry or stop

Each step says what follows: the next step, the job ends well, or the job fails. A step that fails can be tried again, as many times as you say, with minutes between. A step has its own time limit, and so does the job, so a backup that hangs never holds the night's work.

Say what happens when a step fails.

Every run kept

The scheduler keeps every run in a SQL Server or Azure SQL database you choose, the same database SQL Monitor keeps its history in if you like: when it was due, when it started and ended, how it went, each step with what it wrote, and why a step failed. See a job's runs, the newest first, how long each took, and open any run in full.

Last night's run, and every night before it.

Run it now

Run any job now, from VS Code, the desktop app or the command line, and watch each step as it goes. The run is kept with the others, marked as run by hand, and judged for alerts like any other.

Each step, what it wrote, and the file the backup went to.

Ask the assistant about what you see

Open the AI Assistant beside a job and ask why a run failed, when the job is next due, or what a step does. It sees the project with every job's last run, the job on show with its schedule, settings, steps and next runs, the run picked with each step's output, and the open alerts, and it can list and pick jobs, say when one is next due, run a job after you press Run, read its runs and any run's output, and read the alerts. Bring your own Anthropic or OpenAI key.

Ask why a run failed, and get the cause and what to do.

Alerts when a job fails

A job that fails, times out or is skipped because the run before was still going raises an alert through the same email, Teams and Slack channels SQL Monitor uses, and says when the job is fine again. A backup that did not happen is critical; the rest are warnings. The alerts are kept in the history store, so SQL Monitor's alert list shows them too when the two share a store.

You hear when a backup did not happen.

One service for jobs and monitoring

Install the scheduler as a Windows service, a systemd service on Linux or a launchd daemon on a Mac with one command, and give it a SQL Monitor project too, so one service runs your jobs and watches your servers: benchdog scheduler service install --project jobs.scheduler.json --monitor estate.monitor.json. The project, its scripts and the other projects its steps run are copied in together, and the service runs as its own account with no password anywhere.

One service, installed with one command.

Missed runs run once

When the scheduler was not running when a job was due, the job runs once as soon as the scheduler starts, marked as a catch up run, unless the job says to skip what it missed. A job due again while its run before is still going is skipped and says so, so runs never pile up.

It catches up, once.

Time zones and daylight saving

Every job runs at its time in its time zone, the project's or its own, such as Europe/London or Africa/Johannesburg, whatever the server or the service runs in. A time the clocks skip when they go forward is skipped, and a time that comes twice when they go back runs once.

02:00 means 02:00, all year.
Getting started

Your first minutes with SQL Scheduler

  1. Install the Benchdog SQL Scheduler extension in VS Code, or the Benchdog SQL Scheduler desktop app; each carries the engine with the benchdog scheduler commands and the scheduler service.
  2. Press New Project in the SQL Scheduler panel, give it a name, pick the first server and how to sign in, and say whether to keep the history in a database; it writes a .scheduler.json file with an example job.
  3. Add jobs and steps in the file with IntelliSense, then check it with benchdog scheduler project check --project jobs.scheduler.json, which signs in to every server and looks for every file the steps use.

All of SQL Scheduler helpEvery step, the questions people ask, and what to try when something goes wrong.

Ready to try SQL Scheduler?