text: -- this script is for SQL Server and Azure SQL
  
  USE MediaProcessorScheduler;
  GO
  
  IF OBJECT_ID(N'[dbo].[FK_QRTZ_TRIGGERS_QRTZ_JOB_DETAILS]', N'F') IS NOT NULL
  ALTER TABLE [dbo].[QRTZ_TRIGGERS] DROP CONSTRAINT [FK_QRTZ_TRIGGERS_QRTZ_JOB_DETAILS];
  GO
  
  IF OBJECT_ID(N'[dbo].[FK_QRTZ_CRON_TRIGGERS_QRTZ_TRIGGERS]', N'F') IS NOT NULL
  ALTER TABLE [dbo].[QRTZ_CRON_TRIGGERS] DROP CONSTRAINT [FK_QRTZ_CRON_TRIGGERS_QRTZ_TRIGGERS];
  GO
  
  IF OBJECT_ID(N'[dbo].[FK_QRTZ_SIMPLE_TRIGGERS_QRTZ_TRIGGERS]', N'F') IS NOT NULL
  ALTER TABLE [dbo].[QRTZ_SIMPLE_TRIGGERS] DROP CONSTRAINT [FK_QRTZ_SIMPLE_TRIGGERS_QRTZ_TRIGGERS];
  GO
  
  IF OBJECT_ID(N'[dbo].[FK_QRTZ_SIMPROP_TRIGGERS_QRTZ_TRIGGERS]', N'F') IS NOT NULL
  ALTER TABLE [dbo].[QRTZ_SIMPROP_TRIGGERS] DROP CONSTRAINT [FK_QRTZ_SIMPROP_TRIGGERS_QRTZ_TRIGGERS];
  GO
  
  IF  EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[FK_QRTZ_JOB_LISTENERS_QRTZ_JOB_DETAILS]') AND parent_object_id = OBJECT_ID(N'[dbo].[QRTZ_JOB_LISTENERS]'))
  ALTER TABLE [dbo].[QRTZ_JOB_LISTENERS] DROP CONSTRAINT [FK_QRTZ_JOB_LISTENERS_QRTZ_JOB_DETAILS];
  
  IF  EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[FK_QRTZ_TRIGGER_LISTENERS_QRTZ_TRIGGERS]') AND parent_object_id = OBJECT_ID(N'[dbo].[QRTZ_TRIGGER_LISTENERS]'))
  ALTER TABLE [dbo].[QRTZ_TRIGGER_LISTENERS] DROP CONSTRAINT [FK_QRTZ_TRIGGER_LISTENERS_QRTZ_TRIGGERS];
  
  
  IF OBJECT_ID(N'[dbo].[QRTZ_CALENDARS]', N'U') IS NOT NULL
  DROP TABLE [dbo].[QRTZ_CALENDARS];
  GO
  
  IF OBJECT_ID(N'[dbo].[QRTZ_CRON_TRIGGERS]', N'U') IS NOT NULL
  DROP TABLE [dbo].[QRTZ_CRON_TRIGGERS];
  GO
  
  IF OBJECT_ID(N'[dbo].[QRTZ_BLOB_TRIGGERS]', N'U') IS NOT NULL
  DROP TABLE [dbo].[QRTZ_BLOB_TRIGGERS];
  GO
  
  IF OBJECT_ID(N'[dbo].[QRTZ_FIRED_TRIGGERS]', N'U') IS NOT NULL
  DROP TABLE [dbo].[QRTZ_FIRED_TRIGGERS];
  GO
  
  IF OBJECT_ID(N'[dbo].[QRTZ_PAUSED_TRIGGER_GRPS]', N'U') IS NOT NULL
  DROP TABLE [dbo].[QRTZ_PAUSED_TRIGGER_GRPS];
  GO
  
  IF  OBJECT_ID(N'[dbo].[QRTZ_JOB_LISTENERS]', N'U') IS NOT NULL
  DROP TABLE [dbo].[QRTZ_JOB_LISTENERS];
  
  IF OBJECT_ID(N'[dbo].[QRTZ_SCHEDULER_STATE]', N'U') IS NOT NULL
  DROP TABLE [dbo].[QRTZ_SCHEDULER_STATE];
  GO
  
  IF OBJECT_ID(N'[dbo].[QRTZ_LOCKS]', N'U') IS NOT NULL
  DROP TABLE [dbo].[QRTZ_LOCKS];
  GO
  IF OBJECT_ID(N'[dbo].[QRTZ_TRIGGER_LISTENERS]', N'U') IS NOT NULL
  DROP TABLE [dbo].[QRTZ_TRIGGER_LISTENERS];
  
  
  IF OBJECT_ID(N'[dbo].[QRTZ_JOB_DETAILS]', N'U') IS NOT NULL
  DROP TABLE [dbo].[QRTZ_JOB_DETAILS];
  GO
  
  IF OBJECT_ID(N'[dbo].[QRTZ_SIMPLE_TRIGGERS]', N'U') IS NOT NULL
  DROP TABLE [dbo].[QRTZ_SIMPLE_TRIGGERS];
  GO
  
  IF OBJECT_ID(N'[dbo].[QRTZ_SIMPROP_TRIGGERS]', N'U') IS NOT NULL
  DROP TABLE [dbo].[QRTZ_SIMPROP_TRIGGERS];
  GO
  
  IF OBJECT_ID(N'[dbo].[QRTZ_TRIGGERS]', N'U') IS NOT NULL
  DROP TABLE [dbo].[QRTZ_TRIGGERS];
  GO
  
  CREATE TABLE [dbo].[QRTZ_CALENDARS] (
    [SCHED_NAME] nvarchar(120) NOT NULL,
    [CALENDAR_NAME] nvarchar(200) NOT NULL,
    [CALENDAR] varbinary(max) NOT NULL
  );
  GO
  
  CREATE TABLE [dbo].[QRTZ_CRON_TRIGGERS] (
    [SCHED_NAME] nvarchar(120) NOT NULL,
    [TRIGGER_NAME] nvarchar(150) NOT NULL,
    [TRIGGER_GROUP] nvarchar(150) NOT NULL,
    [CRON_EXPRESSION] nvarchar(120) NOT NULL,
    [TIME_ZONE_ID] nvarchar(80) 
  );
  GO
  
  CREATE TABLE [dbo].[QRTZ_FIRED_TRIGGERS] (
    [SCHED_NAME] nvarchar(120) NOT NULL,
    [ENTRY_ID] nvarchar(140) NOT NULL,
    [TRIGGER_NAME] nvarchar(150) NOT NULL,
    [TRIGGER_GROUP] nvarchar(150) NOT NULL,
    [INSTANCE_NAME] nvarchar(200) NOT NULL,
    [FIRED_TIME] bigint NOT NULL,
    [SCHED_TIME] bigint NOT NULL,
    [PRIORITY] int NOT NULL,
    [STATE] nvarchar(16) NOT NULL,
    [JOB_NAME] nvarchar(150) NULL,
    [JOB_GROUP] nvarchar(150) NULL,
    [IS_NONCONCURRENT] bit NULL,
    [REQUESTS_RECOVERY] bit NULL 
  );
  GO
  
  CREATE TABLE [dbo].[QRTZ_PAUSED_TRIGGER_GRPS] (
    [SCHED_NAME] nvarchar(120) NOT NULL,
    [TRIGGER_GROUP] nvarchar(150) NOT NULL 
  );
  GO
  
  CREATE TABLE [dbo].[QRTZ_SCHEDULER_STATE] (
    [SCHED_NAME] nvarchar(120) NOT NULL,
    [INSTANCE_NAME] nvarchar(200) NOT NULL,
    [LAST_CHECKIN_TIME] bigint NOT NULL,
    [CHECKIN_INTERVAL] bigint NOT NULL
  );
  GO
  
  CREATE TABLE [dbo].[QRTZ_LOCKS] (
    [SCHED_NAME] nvarchar(120) NOT NULL,
    [LOCK_NAME] nvarchar(40) NOT NULL 
  );
  GO
  
  CREATE TABLE [dbo].[QRTZ_JOB_DETAILS] (
    [SCHED_NAME] nvarchar(120) NOT NULL,
    [JOB_NAME] nvarchar(150) NOT NULL,
    [JOB_GROUP] nvarchar(150) NOT NULL,
    [DESCRIPTION] nvarchar(250) NULL,
    [JOB_CLASS_NAME] nvarchar(250) NOT NULL,
    [IS_DURABLE] bit NOT NULL,
    [IS_NONCONCURRENT] bit NOT NULL,
    [IS_UPDATE_DATA] bit NOT NULL,
    [REQUESTS_RECOVERY] bit NOT NULL,
    [JOB_DATA] varbinary(max) NULL
  );
  GO
  
  CREATE TABLE [dbo].[QRTZ_SIMPLE_TRIGGERS] (
    [SCHED_NAME] nvarchar(120) NOT NULL,
    [TRIGGER_NAME] nvarchar(150) NOT NULL,
    [TRIGGER_GROUP] nvarchar(150) NOT NULL,
    [REPEAT_COUNT] int NOT NULL,
    [REPEAT_INTERVAL] bigint NOT NULL,
    [TIMES_TRIGGERED] int NOT NULL
  );
  GO
  
  CREATE TABLE [dbo].[QRTZ_SIMPROP_TRIGGERS] (
    [SCHED_NAME] nvarchar(120) NOT NULL,
    [TRIGGER_NAME] nvarchar(150) NOT NULL,
    [TRIGGER_GROUP] nvarchar(150) NOT NULL,
    [STR_PROP_1] nvarchar(512) NULL,
    [STR_PROP_2] nvarchar(512) NULL,
    [STR_PROP_3] nvarchar(512) NULL,
    [INT_PROP_1] int NULL,
    [INT_PROP_2] int NULL,
    [LONG_PROP_1] bigint NULL,
    [LONG_PROP_2] bigint NULL,
    [DEC_PROP_1] numeric(13,4) NULL,
    [DEC_PROP_2] numeric(13,4) NULL,
    [BOOL_PROP_1] bit NULL,
    [BOOL_PROP_2] bit NULL,
    [TIME_ZONE_ID] nvarchar(80) NULL 
  );
  GO
  
  CREATE TABLE [dbo].[QRTZ_BLOB_TRIGGERS] (
    [SCHED_NAME] nvarchar(120) NOT NULL,
    [TRIGGER_NAME] nvarchar(150) NOT NULL,
    [TRIGGER_GROUP] nvarchar(150) NOT NULL,
    [BLOB_DATA] varbinary(max) NULL
  );
  GO
  
  CREATE TABLE [dbo].[QRTZ_TRIGGERS] (
    [SCHED_NAME] nvarchar(120) NOT NULL,
    [TRIGGER_NAME] nvarchar(150) NOT NULL,
    [TRIGGER_GROUP] nvarchar(150) NOT NULL,
    [JOB_NAME] nvarchar(150) NOT NULL,
    [JOB_GROUP] nvarchar(150) NOT NULL,
    [DESCRIPTION] nvarchar(250) NULL,
    [NEXT_FIRE_TIME] bigint NULL,
    [PREV_FIRE_TIME] bigint NULL,
    [PRIORITY] int NULL,
    [TRIGGER_STATE] nvarchar(16) NOT NULL,
    [TRIGGER_TYPE] nvarchar(8) NOT NULL,
    [START_TIME] bigint NOT NULL,
    [END_TIME] bigint NULL,
    [CALENDAR_NAME] nvarchar(200) NULL,
    [MISFIRE_INSTR] int NULL,
    [JOB_DATA] varbinary(max) NULL
  );
  GO
  
  ALTER TABLE [dbo].[QRTZ_CALENDARS] WITH NOCHECK ADD
    CONSTRAINT [PK_QRTZ_CALENDARS] PRIMARY KEY  CLUSTERED
    (
      [SCHED_NAME],
      [CALENDAR_NAME]
    );
  GO
  
  ALTER TABLE [dbo].[QRTZ_CRON_TRIGGERS] WITH NOCHECK ADD
    CONSTRAINT [PK_QRTZ_CRON_TRIGGERS] PRIMARY KEY  CLUSTERED
    (
      [SCHED_NAME],
      [TRIGGER_NAME],
      [TRIGGER_GROUP]
    );
  GO
  
  ALTER TABLE [dbo].[QRTZ_FIRED_TRIGGERS] WITH NOCHECK ADD
    CONSTRAINT [PK_QRTZ_FIRED_TRIGGERS] PRIMARY KEY  CLUSTERED
    (
      [SCHED_NAME],
      [ENTRY_ID]
    );
  GO
  
  ALTER TABLE [dbo].[QRTZ_PAUSED_TRIGGER_GRPS] WITH NOCHECK ADD
    CONSTRAINT [PK_QRTZ_PAUSED_TRIGGER_GRPS] PRIMARY KEY  CLUSTERED
    (
      [SCHED_NAME],
      [TRIGGER_GROUP]
    );
  GO
  
  ALTER TABLE [dbo].[QRTZ_SCHEDULER_STATE] WITH NOCHECK ADD
    CONSTRAINT [PK_QRTZ_SCHEDULER_STATE] PRIMARY KEY  CLUSTERED
    (
      [SCHED_NAME],
      [INSTANCE_NAME]
    );
  GO
  
  ALTER TABLE [dbo].[QRTZ_LOCKS] WITH NOCHECK ADD
    CONSTRAINT [PK_QRTZ_LOCKS] PRIMARY KEY  CLUSTERED
    (
      [SCHED_NAME],
      [LOCK_NAME]
    );
  GO
  
  ALTER TABLE [dbo].[QRTZ_JOB_DETAILS] WITH NOCHECK ADD
    CONSTRAINT [PK_QRTZ_JOB_DETAILS] PRIMARY KEY  CLUSTERED
    (
      [SCHED_NAME],
      [JOB_NAME],
      [JOB_GROUP]
    );
  GO
  
  ALTER TABLE [dbo].[QRTZ_SIMPLE_TRIGGERS] WITH NOCHECK ADD
    CONSTRAINT [PK_QRTZ_SIMPLE_TRIGGERS] PRIMARY KEY  CLUSTERED
    (
      [SCHED_NAME],
      [TRIGGER_NAME],
      [TRIGGER_GROUP]
    );
  GO
  
  ALTER TABLE [dbo].[QRTZ_SIMPROP_TRIGGERS] WITH NOCHECK ADD
    CONSTRAINT [PK_QRTZ_SIMPROP_TRIGGERS] PRIMARY KEY  CLUSTERED
    (
      [SCHED_NAME],
      [TRIGGER_NAME],
      [TRIGGER_GROUP]
    );
  GO
  
  ALTER TABLE [dbo].[QRTZ_TRIGGERS] WITH NOCHECK ADD
    CONSTRAINT [PK_QRTZ_TRIGGERS] PRIMARY KEY  CLUSTERED
    (
      [SCHED_NAME],
      [TRIGGER_NAME],
      [TRIGGER_GROUP]
    );
  GO
  
  ALTER TABLE [dbo].[QRTZ_BLOB_TRIGGERS] WITH NOCHECK ADD
    CONSTRAINT [PK_QRTZ_BLOB_TRIGGERS] PRIMARY KEY  CLUSTERED
    (
      [SCHED_NAME],
      [TRIGGER_NAME],
      [TRIGGER_GROUP]
    );
  GO
  
  ALTER TABLE [dbo].[QRTZ_CRON_TRIGGERS] ADD
    CONSTRAINT [FK_QRTZ_CRON_TRIGGERS_QRTZ_TRIGGERS] FOREIGN KEY
    (
      [SCHED_NAME],
      [TRIGGER_NAME],
      [TRIGGER_GROUP]
    ) REFERENCES [dbo].[QRTZ_TRIGGERS] (
      [SCHED_NAME],
      [TRIGGER_NAME],
      [TRIGGER_GROUP]
    ) ON DELETE CASCADE;
  GO
  
  ALTER TABLE [dbo].[QRTZ_SIMPLE_TRIGGERS] ADD
    CONSTRAINT [FK_QRTZ_SIMPLE_TRIGGERS_QRTZ_TRIGGERS] FOREIGN KEY
    (
      [SCHED_NAME],
      [TRIGGER_NAME],
      [TRIGGER_GROUP]
    ) REFERENCES [dbo].[QRTZ_TRIGGERS] (
      [SCHED_NAME],
      [TRIGGER_NAME],
      [TRIGGER_GROUP]
    ) ON DELETE CASCADE;
  GO
  
  ALTER TABLE [dbo].[QRTZ_SIMPROP_TRIGGERS] ADD
    CONSTRAINT [FK_QRTZ_SIMPROP_TRIGGERS_QRTZ_TRIGGERS] FOREIGN KEY
    (
  	[SCHED_NAME],
      [TRIGGER_NAME],
      [TRIGGER_GROUP]
    ) REFERENCES [dbo].[QRTZ_TRIGGERS] (
      [SCHED_NAME],
      [TRIGGER_NAME],
      [TRIGGER_GROUP]
    ) ON DELETE CASCADE;
  GO
  
  ALTER TABLE [dbo].[QRTZ_TRIGGERS] ADD
    CONSTRAINT [FK_QRTZ_TRIGGERS_QRTZ_JOB_DETAILS] FOREIGN KEY
    (
      [SCHED_NAME],
      [JOB_NAME],
      [JOB_GROUP]
    ) REFERENCES [dbo].[QRTZ_JOB_DETAILS] (
      [SCHED_NAME],
      [JOB_NAME],
      [JOB_GROUP]
    );
  GO
  
  -- drop indexe if they exist and rebuild if current ones
  DROP INDEX IF EXISTS [IDX_QRTZ_T_J] ON [dbo].[QRTZ_TRIGGERS];
  DROP INDEX IF EXISTS [IDX_QRTZ_T_JG] ON [dbo].[QRTZ_TRIGGERS];
  DROP INDEX IF EXISTS [IDX_QRTZ_T_C] ON [dbo].[QRTZ_TRIGGERS];
  DROP INDEX IF EXISTS [IDX_QRTZ_T_G] ON [dbo].[QRTZ_TRIGGERS];
  DROP INDEX IF EXISTS [IDX_QRTZ_T_G_J] ON [dbo].[QRTZ_TRIGGERS];
  DROP INDEX IF EXISTS [IDX_QRTZ_T_STATE] ON [dbo].[QRTZ_TRIGGERS];
  DROP INDEX IF EXISTS [IDX_QRTZ_T_N_STATE] ON [dbo].[QRTZ_TRIGGERS];
  DROP INDEX IF EXISTS [IDX_QRTZ_T_N_G_STATE] ON [dbo].[QRTZ_TRIGGERS];
  DROP INDEX IF EXISTS [IDX_QRTZ_T_NEXT_FIRE_TIME] ON [dbo].[QRTZ_TRIGGERS];
  DROP INDEX IF EXISTS [IDX_QRTZ_T_NFT_ST] ON [dbo].[QRTZ_TRIGGERS];
  DROP INDEX IF EXISTS [IDX_QRTZ_T_NFT_MISFIRE] ON [dbo].[QRTZ_TRIGGERS];
  DROP INDEX IF EXISTS [IDX_QRTZ_T_NFT_ST_MISFIRE] ON [dbo].[QRTZ_TRIGGERS];
  DROP INDEX IF EXISTS [IDX_QRTZ_T_NFT_ST_MISFIRE_GRP] ON [dbo].[QRTZ_TRIGGERS];
  DROP INDEX IF EXISTS [IDX_QRTZ_FT_TRIG_INST_NAME] ON [dbo].[QRTZ_FIRED_TRIGGERS];
  DROP INDEX IF EXISTS [IDX_QRTZ_FT_INST_JOB_REQ_RCVRY] ON [dbo].[QRTZ_FIRED_TRIGGERS];
  DROP INDEX IF EXISTS [IDX_QRTZ_FT_J_G] ON [dbo].[QRTZ_FIRED_TRIGGERS];
  DROP INDEX IF EXISTS [IDX_QRTZ_FT_JG] ON [dbo].[QRTZ_FIRED_TRIGGERS];
  DROP INDEX IF EXISTS [IDX_QRTZ_FT_T_G] ON [dbo].[QRTZ_FIRED_TRIGGERS];
  DROP INDEX IF EXISTS [IDX_QRTZ_FT_TG] ON [dbo].[QRTZ_FIRED_TRIGGERS];
  DROP INDEX IF EXISTS [IDX_QRTZ_FT_G_J] ON [dbo].[QRTZ_FIRED_TRIGGERS];
  DROP INDEX IF EXISTS [IDX_QRTZ_FT_G_T] ON [dbo].[QRTZ_FIRED_TRIGGERS];
  GO
  
  
  CREATE INDEX [IDX_QRTZ_T_G_J]                 ON [dbo].[QRTZ_TRIGGERS](SCHED_NAME, JOB_GROUP, JOB_NAME);
  CREATE INDEX [IDX_QRTZ_T_C]                   ON [dbo].[QRTZ_TRIGGERS](SCHED_NAME, CALENDAR_NAME);
  
  CREATE INDEX [IDX_QRTZ_T_N_G_STATE]           ON [dbo].[QRTZ_TRIGGERS](SCHED_NAME, TRIGGER_GROUP, TRIGGER_STATE);
  CREATE INDEX [IDX_QRTZ_T_STATE]               ON [dbo].[QRTZ_TRIGGERS](SCHED_NAME, TRIGGER_STATE);
  CREATE INDEX [IDX_QRTZ_T_N_STATE]             ON [dbo].[QRTZ_TRIGGERS](SCHED_NAME, TRIGGER_NAME, TRIGGER_GROUP, TRIGGER_STATE);
  CREATE INDEX [IDX_QRTZ_T_NEXT_FIRE_TIME]      ON [dbo].[QRTZ_TRIGGERS](SCHED_NAME, NEXT_FIRE_TIME);
  CREATE INDEX [IDX_QRTZ_T_NFT_ST]              ON [dbo].[QRTZ_TRIGGERS](SCHED_NAME, TRIGGER_STATE, NEXT_FIRE_TIME);
  CREATE INDEX [IDX_QRTZ_T_NFT_ST_MISFIRE]      ON [dbo].[QRTZ_TRIGGERS](SCHED_NAME, MISFIRE_INSTR, NEXT_FIRE_TIME, TRIGGER_STATE);
  CREATE INDEX [IDX_QRTZ_T_NFT_ST_MISFIRE_GRP]  ON [dbo].[QRTZ_TRIGGERS](SCHED_NAME, MISFIRE_INSTR, NEXT_FIRE_TIME, TRIGGER_GROUP, TRIGGER_STATE);
  
  CREATE INDEX [IDX_QRTZ_FT_INST_JOB_REQ_RCVRY] ON [dbo].[QRTZ_FIRED_TRIGGERS](SCHED_NAME, INSTANCE_NAME, REQUESTS_RECOVERY);
  CREATE INDEX [IDX_QRTZ_FT_G_J]                ON [dbo].[QRTZ_FIRED_TRIGGERS](SCHED_NAME, JOB_GROUP, JOB_NAME);
  CREATE INDEX [IDX_QRTZ_FT_G_T]                ON [dbo].[QRTZ_FIRED_TRIGGERS](SCHED_NAME, TRIGGER_GROUP, TRIGGER_NAME);
  GO